Move central agent code to the polling agent module

That's the preparation for further compute and central agents
merge

Partially-Implements-Blueprint: merge-compute-central-agents

Change-Id: If5f151ab7d30c9711929f6dcade553fdca09ab67
This commit is contained in:
Dina Belova 2014-10-08 16:47:33 +04:00
parent fec091a2db
commit 68df2bb9dc
50 changed files with 223 additions and 223 deletions

View File

@ -1,4 +1,3 @@
#
# Copyright 2014 Red Hat, Inc
#
# Author: Nejc Saje <nsaje@redhat.com>
@ -17,9 +16,9 @@
from oslo.config import cfg
from ceilometer.agent import plugin_base as plugin
from ceilometer.i18n import _LW
from ceilometer.openstack.common import log
from ceilometer import plugin
LOG = log.getLogger(__name__)
@ -47,16 +46,3 @@ class EndpointDiscovery(plugin.DiscoveryBase):
return []
else:
return endpoints
class TenantDiscovery(plugin.DiscoveryBase):
"""Discovery that supplies keystone tenants.
This discovery should be used when the pollster's work can't be divided
into smaller pieces than per-tenant. Example of this is the Swift
pollster, which polls account details and does so per-tenant.
"""
def discover(self, manager, param=None):
tenants = manager.keystone.tenants.list()
return tenants or []

View File

@ -0,0 +1,37 @@
# Copyright 2014 Red Hat, Inc
#
# Author: Nejc Saje <nsaje@redhat.com>
#
# 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.
from oslo.config import cfg
from ceilometer.agent import plugin_base as plugin
from ceilometer.openstack.common import log
LOG = log.getLogger(__name__)
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
class TenantDiscovery(plugin.DiscoveryBase):
"""Discovery that supplies keystone tenants.
This discovery should be used when the pollster's work can't be divided
into smaller pieces than per-tenant. Example of this is the Swift
pollster, which polls account details and does so per-tenant.
"""
def discover(self, manager, param=None):
tenants = manager.keystone.tenants.list()
return tenants or []

View File

@ -18,30 +18,32 @@
from keystoneclient.v2_0 import client as ksclient
from oslo.config import cfg
from ceilometer import agent
from ceilometer.agent import base
from ceilometer.openstack.common import log
OPTS = [
cfg.StrOpt('partitioning_group_prefix',
default=None,
deprecated_group='central',
help='Work-load partitioning group prefix. Use only if you '
'want to run multiple central agents with different '
'config files. For each sub-group of the central agent '
'want to run multiple polling agents with different '
'config files. For each sub-group of the agent '
'pool with the same partitioning_group_prefix a disjoint '
'subset of pollsters should be loaded.'),
]
cfg.CONF.register_opts(OPTS, group='central')
cfg.CONF.import_opt('http_timeout', 'ceilometer.service')
cfg.CONF.register_opts(OPTS, group='polling')
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
cfg.CONF.import_opt('http_timeout', 'ceilometer.service')
LOG = log.getLogger(__name__)
class AgentManager(agent.AgentManager):
class AgentManager(base.AgentManager):
def __init__(self):
def __init__(self, namespace='agent'):
super(AgentManager, self).__init__(
'central', group_prefix=cfg.CONF.central.partitioning_group_prefix)
namespace, group_prefix=cfg.CONF.polling.partitioning_group_prefix)
def interval_task(self, task):
try:

View File

@ -21,6 +21,8 @@ import abc
import collections
import fnmatch
from keystoneclient.v2_0 import client as ksclient
from oslo.config import cfg
import oslo.messaging
import six
@ -29,12 +31,60 @@ from ceilometer import messaging
from ceilometer.openstack.common import context
from ceilometer.openstack.common import log
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
LOG = log.getLogger(__name__)
ExchangeTopics = collections.namedtuple('ExchangeTopics',
['exchange', 'topics'])
def _get_keystone():
try:
return ksclient.Client(
username=cfg.CONF.service_credentials.os_username,
password=cfg.CONF.service_credentials.os_password,
tenant_id=cfg.CONF.service_credentials.os_tenant_id,
tenant_name=cfg.CONF.service_credentials.os_tenant_name,
cacert=cfg.CONF.service_credentials.os_cacert,
auth_url=cfg.CONF.service_credentials.os_auth_url,
region_name=cfg.CONF.service_credentials.os_region_name,
insecure=cfg.CONF.service_credentials.insecure)
except Exception as e:
return e
def check_keystone(service_type=None):
"""Decorator function to check if manager has valid keystone client.
Also checks if the service is registered/enabled in Keystone.
:param service_type: name of service in Keystone
"""
def wrapped(f):
def func(self, *args, **kwargs):
manager = kwargs.get('manager')
if not manager and len(args) > 0:
manager = args[0]
keystone = getattr(manager, 'keystone', None)
if not keystone:
keystone = _get_keystone()
if isinstance(keystone, Exception):
LOG.error(_('Skip due to keystone error %s'),
str(keystone) if keystone else '')
return iter([])
elif service_type:
endpoints = keystone.service_catalog.get_endpoints(
service_type=service_type)
if not endpoints:
LOG.warning(_('Skipping because %s service is not '
'registered in keystone') % service_type)
return iter([])
return f(self, *args, **kwargs)
return func
return wrapped
class PluginBase(object):
"""Base class for all plugins."""

View File

@ -1,80 +0,0 @@
#
# Copyright 2012 New Dream Network, LLC (DreamHost)
#
# Author: Doug Hellmann <doug.hellmann@dreamhost.com>
#
# 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.
"""Base class for plugins used by the central agent.
"""
from keystoneclient.v2_0 import client as ksclient
from oslo.config import cfg
from ceilometer.i18n import _
from ceilometer.openstack.common import log
from ceilometer import plugin
cfg.CONF.import_opt('http_timeout', 'ceilometer.service')
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
LOG = log.getLogger(__name__)
class CentralPollster(plugin.PollsterBase):
"""Base class for plugins that support the polling API."""
def _get_keystone():
try:
return ksclient.Client(
username=cfg.CONF.service_credentials.os_username,
password=cfg.CONF.service_credentials.os_password,
tenant_id=cfg.CONF.service_credentials.os_tenant_id,
tenant_name=cfg.CONF.service_credentials.os_tenant_name,
cacert=cfg.CONF.service_credentials.os_cacert,
auth_url=cfg.CONF.service_credentials.os_auth_url,
region_name=cfg.CONF.service_credentials.os_region_name,
insecure=cfg.CONF.service_credentials.insecure,
timeout=cfg.CONF.http_timeout)
except Exception as e:
return e
def check_keystone(service_type=None):
"""Decorator function to check if manager has valid keystone client.
Also checks if the service is registered/enabled in Keystone.
:param service_type: name of service in Keystone
"""
def wrapped(f):
def func(self, *args, **kwargs):
manager = kwargs.get('manager')
if not manager and len(args) > 0:
manager = args[0]
keystone = getattr(manager, 'keystone', None)
if not keystone:
keystone = _get_keystone()
if isinstance(keystone, Exception):
LOG.error(_('Skip due to keystone error %s'),
str(keystone) if keystone else '')
return iter([])
elif service_type:
endpoints = keystone.service_catalog.get_endpoints(
service_type=service_type)
if not endpoints:
LOG.warning(_('Skipping because %s service is not '
'registered in keystone') % service_type)
return iter([])
return f(self, *args, **kwargs)
return func
return wrapped

View File

@ -14,7 +14,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from ceilometer.central import manager
from ceilometer.agent import manager
from ceilometer.openstack.common import service as os_service
from ceilometer import service

View File

@ -17,8 +17,8 @@
from oslo.config import cfg
from ceilometer.agent import plugin_base
from ceilometer import nova_client
from ceilometer import plugin
OPTS = [
cfg.BoolOpt('workload_partitioning',
@ -29,7 +29,7 @@ OPTS = [
cfg.CONF.register_opts(OPTS, group='compute')
class InstanceDiscovery(plugin.DiscoveryBase):
class InstanceDiscovery(plugin_base.DiscoveryBase):
def __init__(self):
super(InstanceDiscovery, self).__init__()
self.nova_cli = nova_client.Client()

View File

@ -15,14 +15,14 @@
# License for the specific language governing permissions and limitations
# under the License.
from ceilometer import agent
from ceilometer.agent import manager
from ceilometer.compute.virt import inspector as virt_inspector
from ceilometer.openstack.common import log
LOG = log.getLogger(__name__)
class AgentManager(agent.AgentManager):
class AgentManager(manager.AgentManager):
def __init__(self):
super(AgentManager, self).__init__('compute')

View File

@ -18,7 +18,7 @@
from oslo.config import cfg
import oslo.messaging
from ceilometer import plugin
from ceilometer.agent import plugin_base
OPTS = [
@ -31,7 +31,7 @@ OPTS = [
cfg.CONF.register_opts(OPTS)
class ComputeNotificationBase(plugin.NotificationBase):
class ComputeNotificationBase(plugin_base.NotificationBase):
@staticmethod
def get_targets(conf):
"""Return a sequence of oslo.messaging.Target

View File

@ -22,7 +22,7 @@ import abc
from oslo.utils import timeutils
import six
from ceilometer import plugin
from ceilometer.agent import plugin_base as plugin
@six.add_metaclass(abc.ABCMeta)

View File

@ -17,7 +17,7 @@
from oslo.config import cfg
import oslo.messaging
from ceilometer import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
@ -31,7 +31,7 @@ cfg.CONF.register_opts(OPTS)
SERVICE = 'sahara'
class DataProcessing(plugin.NotificationBase):
class DataProcessing(plugin_base.NotificationBase):
resource_name = '%s.cluster' % SERVICE

View File

@ -21,7 +21,7 @@ from oslo.config import cfg
import requests
import six
from ceilometer.central import plugin
from ceilometer.agent import plugin_base
from ceilometer.i18n import _
from ceilometer.openstack.common import log
from ceilometer import sample
@ -62,8 +62,8 @@ class KwapiClient(object):
yield probe_dict
class _Base(plugin.CentralPollster):
"""Base class for the Kwapi pollster, derived from CentralPollster."""
class _Base(plugin_base.PollsterBase):
"""Base class for the Kwapi pollster, derived from PollsterBase."""
@property
def default_discovery(self):

View File

@ -14,10 +14,10 @@
from oslo.config import cfg
from ceilometer.agent import plugin_base
from ceilometer.i18n import _
from ceilometer import nova_client
from ceilometer.openstack.common import log
from ceilometer import plugin
LOG = log.getLogger(__name__)
@ -37,7 +37,7 @@ OPTS = [
cfg.CONF.register_opts(OPTS, group='hardware')
class NodesDiscoveryTripleO(plugin.DiscoveryBase):
class NodesDiscoveryTripleO(plugin_base.DiscoveryBase):
def __init__(self):
super(NodesDiscoveryTripleO, self).__init__()
self.nova_cli = nova_client.Client()

View File

@ -25,7 +25,7 @@ import itertools
from oslo.utils import netutils
import six
from ceilometer.central import plugin
from ceilometer.agent import plugin_base
from ceilometer.hardware import inspector as insloader
from ceilometer.i18n import _
from ceilometer.openstack.common import log
@ -34,7 +34,7 @@ LOG = log.getLogger(__name__)
@six.add_metaclass(abc.ABCMeta)
class HardwarePollster(plugin.CentralPollster):
class HardwarePollster(plugin_base.PollsterBase):
"""Base class for plugins that support the polling API."""
CACHE_KEY = None

View File

@ -14,7 +14,7 @@
from oslo.config import cfg
import oslo.messaging
from ceilometer import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
OPTS = [
@ -29,7 +29,7 @@ cfg.CONF.register_opts(OPTS)
SERVICE = 'identity'
class _Base(plugin.NotificationBase):
class _Base(plugin_base.NotificationBase):
"""Convert identity notification into Samples."""
resource_type = None

View File

@ -24,7 +24,7 @@ import glanceclient
from oslo.config import cfg
from oslo.utils import timeutils
from ceilometer.central import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
@ -49,7 +49,7 @@ cfg.CONF.register_opts(OPTS)
cfg.CONF.register_opts(SERVICE_OPTS, group='service_types')
class _Base(plugin.CentralPollster):
class _Base(plugin_base.PollsterBase):
@property
def default_discovery(self):

View File

@ -21,7 +21,7 @@
from oslo.config import cfg
import oslo.messaging
from ceilometer import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
OPTS = [
@ -34,7 +34,7 @@ OPTS = [
cfg.CONF.register_opts(OPTS)
class ImageBase(plugin.NotificationBase):
class ImageBase(plugin_base.NotificationBase):
"""Base class for image counting."""
@staticmethod

View File

@ -14,10 +14,10 @@
# License for the specific language governing permissions and limitations
# under the License.
from ceilometer import agent
from ceilometer.agent import manager
class AgentManager(agent.AgentManager):
class AgentManager(manager.AgentManager):
def __init__(self):
super(AgentManager, self).__init__('ipmi')

View File

@ -21,8 +21,8 @@ notification events.
from oslo.config import cfg
from oslo import messaging
from ceilometer.agent import plugin_base
from ceilometer.openstack.common import log
from ceilometer import plugin
from ceilometer import sample
LOG = log.getLogger(__name__)
@ -67,7 +67,7 @@ class InvalidSensorData(ValueError):
pass
class SensorNotification(plugin.NotificationBase):
class SensorNotification(plugin_base.NotificationBase):
"""A generic class for extracting samples from sensor data notifications.
A notification message can contain multiple samples from multiple

View File

@ -20,8 +20,8 @@ from oslo.config import cfg
from oslo.utils import timeutils
import six
from ceilometer.agent import plugin_base
from ceilometer.ipmi.platform import intel_node_manager as node_manager
from ceilometer import plugin
from ceilometer import sample
CONF = cfg.CONF
@ -29,7 +29,7 @@ CONF.import_opt('host', 'ceilometer.service')
@six.add_metaclass(abc.ABCMeta)
class _Base(plugin.PollsterBase):
class _Base(plugin_base.PollsterBase):
def __init__(self):
self.nodemanager = node_manager.NodeManager()

View File

@ -17,9 +17,9 @@
from oslo.config import cfg
from oslo.utils import timeutils
from ceilometer.agent import plugin_base
from ceilometer.ipmi.notifications import ironic as parser
from ceilometer.ipmi.platform import ipmi_sensor
from ceilometer import plugin
from ceilometer import sample
CONF = cfg.CONF
@ -30,7 +30,7 @@ class InvalidSensorData(ValueError):
pass
class SensorPollster(plugin.PollsterBase):
class SensorPollster(plugin_base.PollsterBase):
METRIC = None

View File

@ -18,7 +18,7 @@
from oslo.config import cfg
import oslo.messaging
from ceilometer import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
cfg.CONF.import_opt('nova_control_exchange',
@ -42,7 +42,7 @@ OPTS = [
cfg.CONF.register_opts(OPTS)
class HTTPRequest(plugin.NotificationBase):
class HTTPRequest(plugin_base.NotificationBase):
event_types = ['http.request']
@staticmethod

View File

@ -21,7 +21,7 @@
from oslo.config import cfg
from oslo.utils import timeutils
from ceilometer.central import plugin
from ceilometer.agent import plugin_base
from ceilometer.i18n import _
from ceilometer import nova_client
from ceilometer.openstack.common import log
@ -33,7 +33,7 @@ LOG = log.getLogger(__name__)
cfg.CONF.import_group('service_types', 'ceilometer.nova_client')
class FloatingIPPollster(plugin.CentralPollster):
class FloatingIPPollster(plugin_base.PollsterBase):
def _get_floating_ips(self, ksclient, endpoint):
nv = nova_client.Client(

View File

@ -22,9 +22,9 @@
from oslo.config import cfg
import oslo.messaging
from ceilometer.agent import plugin_base
from ceilometer.i18n import _
from ceilometer.openstack.common import log
from ceilometer import plugin
from ceilometer import sample
OPTS = [
@ -39,7 +39,7 @@ cfg.CONF.register_opts(OPTS)
LOG = log.getLogger(__name__)
class NetworkNotificationBase(plugin.NotificationBase):
class NetworkNotificationBase(plugin_base.NotificationBase):
resource_name = None

View File

@ -15,9 +15,9 @@
# License for the specific language governing permissions and limitations
# under the License.
from ceilometer.agent import plugin_base
from ceilometer import neutron_client
from ceilometer.openstack.common import log
from ceilometer import plugin
LOG = log.getLogger(__name__)
@ -30,7 +30,7 @@ STATUS = {
}
class BaseServicesPollster(plugin.PollsterBase):
class BaseServicesPollster(plugin_base.PollsterBase):
FIELDS = []
nc = neutron_client.Client()

View File

@ -17,15 +17,14 @@
from oslo.config import cfg
from ceilometer.central import plugin
from ceilometer.agent import plugin_base
from ceilometer import neutron_client
from ceilometer import plugin as base_plugin
cfg.CONF.import_group('service_types', 'ceilometer.neutron_client')
class _BaseServicesDiscovery(base_plugin.DiscoveryBase):
class _BaseServicesDiscovery(plugin_base.DiscoveryBase):
def __init__(self):
super(_BaseServicesDiscovery, self).__init__()
@ -33,7 +32,7 @@ class _BaseServicesDiscovery(base_plugin.DiscoveryBase):
class LBPoolsDiscovery(_BaseServicesDiscovery):
@plugin.check_keystone(cfg.CONF.service_types.neutron)
@plugin_base.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@ -43,7 +42,7 @@ class LBPoolsDiscovery(_BaseServicesDiscovery):
class LBVipsDiscovery(_BaseServicesDiscovery):
@plugin.check_keystone(cfg.CONF.service_types.neutron)
@plugin_base.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@ -53,7 +52,7 @@ class LBVipsDiscovery(_BaseServicesDiscovery):
class LBMembersDiscovery(_BaseServicesDiscovery):
@plugin.check_keystone(cfg.CONF.service_types.neutron)
@plugin_base.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@ -63,7 +62,7 @@ class LBMembersDiscovery(_BaseServicesDiscovery):
class LBHealthMonitorsDiscovery(_BaseServicesDiscovery):
@plugin.check_keystone(cfg.CONF.service_types.neutron)
@plugin_base.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@ -72,7 +71,7 @@ class LBHealthMonitorsDiscovery(_BaseServicesDiscovery):
class VPNServicesDiscovery(_BaseServicesDiscovery):
@plugin.check_keystone(cfg.CONF.service_types.neutron)
@plugin_base.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@ -82,7 +81,7 @@ class VPNServicesDiscovery(_BaseServicesDiscovery):
class IPSecConnectionsDiscovery(_BaseServicesDiscovery):
@plugin.check_keystone(cfg.CONF.service_types.neutron)
@plugin_base.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@ -91,7 +90,7 @@ class IPSecConnectionsDiscovery(_BaseServicesDiscovery):
class FirewallDiscovery(_BaseServicesDiscovery):
@plugin.check_keystone(cfg.CONF.service_types.neutron)
@plugin_base.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@ -101,7 +100,7 @@ class FirewallDiscovery(_BaseServicesDiscovery):
class FirewallPolicyDiscovery(_BaseServicesDiscovery):
@plugin.check_keystone(cfg.CONF.service_types.neutron)
@plugin_base.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""

View File

@ -20,12 +20,12 @@ import six
from six.moves.urllib import parse as urlparse
from stevedore import driver as _driver
from ceilometer.central import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
@six.add_metaclass(abc.ABCMeta)
class _Base(plugin.CentralPollster):
class _Base(plugin_base.PollsterBase):
NAMESPACE = 'network.statistics.drivers'
drivers = {}

View File

@ -25,7 +25,7 @@ from oslo.utils import timeutils
import six.moves.urllib.parse as urlparse
from swiftclient import client as swift
from ceilometer.central import plugin
from ceilometer.agent import plugin_base
from ceilometer.i18n import _
from ceilometer.openstack.common import log
from ceilometer import sample
@ -51,7 +51,7 @@ cfg.CONF.register_opts(SERVICE_OPTS, group='service_types')
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
class _Base(plugin.CentralPollster):
class _Base(plugin_base.PollsterBase):
METHOD = 'head'
_ENDPOINT = None

View File

@ -13,13 +13,13 @@
# under the License.
import itertools
import ceilometer.agent.manager
import ceilometer.alarm.notifier.rest
import ceilometer.alarm.rpc
import ceilometer.alarm.service
import ceilometer.api
import ceilometer.api.app
import ceilometer.api.controllers.v2
import ceilometer.central.manager
import ceilometer.cmd.alarm
import ceilometer.collector
import ceilometer.compute.discovery
@ -104,7 +104,7 @@ def list_opts():
('api',
itertools.chain(ceilometer.api.OPTS,
ceilometer.api.app.API_OPTS,)),
('central', ceilometer.central.manager.OPTS),
('central', ceilometer.agent.manager.OPTS),
('collector', ceilometer.collector.OPTS),
('compute', ceilometer.compute.discovery.OPTS),
('coordination', ceilometer.coordination.OPTS),

View File

@ -18,7 +18,7 @@
from oslo.config import cfg
import oslo.messaging
from ceilometer import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
@ -32,7 +32,7 @@ cfg.CONF.register_opts(OPTS)
SERVICE = 'orchestration'
class StackCRUD(plugin.NotificationBase):
class StackCRUD(plugin_base.NotificationBase):
resource_name = '%s.stack' % SERVICE

View File

@ -16,7 +16,7 @@
from oslo.config import cfg
import oslo.messaging
from ceilometer import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
@ -32,7 +32,7 @@ cfg.CONF.import_opt('keystone_control_exchange',
'ceilometer.identity.notifications')
class ProfilerNotifications(plugin.NotificationBase):
class ProfilerNotifications(plugin_base.NotificationBase):
event_types = ["profiler.*"]

View File

View File

@ -31,8 +31,8 @@ from oslotest import mockpatch
import six
from stevedore import extension
from ceilometer.agent import plugin_base
from ceilometer import pipeline
from ceilometer import plugin
from ceilometer import publisher
from ceilometer.publisher import test as test_publisher
from ceilometer import sample
@ -70,7 +70,7 @@ default_test_data = TestSample(
)
class TestPollster(plugin.PollsterBase):
class TestPollster(plugin_base.PollsterBase):
test_data = default_test_data
discovery = None
@ -95,13 +95,13 @@ class TestPollsterException(TestPollster):
raise Exception()
class TestDiscovery(plugin.DiscoveryBase):
class TestDiscovery(plugin_base.DiscoveryBase):
def discover(self, manager, param=None):
self.params.append(param)
return self.resources
class TestDiscoveryException(plugin.DiscoveryBase):
class TestDiscoveryException(plugin_base.DiscoveryBase):
def discover(self, manager, param=None):
self.params.append(param)
raise Exception()
@ -310,7 +310,7 @@ class BaseAgentManagerTestCase(base.BaseTestCase):
def test_setup_polling_tasks(self):
polling_tasks = self.mgr.setup_polling_tasks()
self.assertEqual(1, len(polling_tasks))
self.assertIn(60, polling_tasks.keys())
self.assertTrue(60 in polling_tasks.keys())
per_task_resources = polling_tasks[60].resources
self.assertEqual(1, len(per_task_resources))
self.assertEqual(set(self.pipeline_cfg[0]['resources']),
@ -332,8 +332,8 @@ class BaseAgentManagerTestCase(base.BaseTestCase):
self.setup_pipeline()
polling_tasks = self.mgr.setup_polling_tasks()
self.assertEqual(2, len(polling_tasks))
self.assertIn(60, polling_tasks.keys())
self.assertIn(10, polling_tasks.keys())
self.assertTrue(60 in polling_tasks.keys())
self.assertTrue(10 in polling_tasks.keys())
def test_setup_polling_tasks_mismatch_counter(self):
self.pipeline_cfg.append(
@ -347,7 +347,7 @@ class BaseAgentManagerTestCase(base.BaseTestCase):
})
polling_tasks = self.mgr.setup_polling_tasks()
self.assertEqual(1, len(polling_tasks))
self.assertIn(60, polling_tasks.keys())
self.assertTrue(60 in polling_tasks.keys())
def test_setup_polling_task_same_interval(self):
self.pipeline_cfg.append({
@ -529,7 +529,7 @@ class BaseAgentManagerTestCase(base.BaseTestCase):
self.setup_pipeline()
polling_tasks = self.mgr.setup_polling_tasks()
self.assertEqual(1, len(polling_tasks))
self.assertIn(60, polling_tasks.keys())
self.assertTrue(60 in polling_tasks.keys())
self.mgr.interval_task(polling_tasks.get(60))
self.assertEqual([None], self.Discovery.params)
self.assertEqual([None], self.DiscoveryAnother.params)
@ -553,11 +553,11 @@ class BaseAgentManagerTestCase(base.BaseTestCase):
published = pipe_line.publishers[0].samples[0]
published_resources = published.resource_metadata['resources']
self.assertEqual(3, len(published_resources))
self.assertIn(published_resources[0], expected_pipelines)
self.assertTrue(published_resources[0] in expected_pipelines)
self.assertEqual(expected_pipelines[published_resources[0]],
pipe_line.name)
for published_resource in published_resources:
self.assertIn(published_resource, all_resources)
self.assertTrue(published_resource in all_resources)
sunk_resources.extend(published_resources)
self.assertEqual(all_resources, set(sunk_resources))
@ -585,7 +585,7 @@ class BaseAgentManagerTestCase(base.BaseTestCase):
self.setup_pipeline()
polling_tasks = self.mgr.setup_polling_tasks()
self.assertEqual(1, len(polling_tasks))
self.assertIn(60, polling_tasks.keys())
self.assertTrue(60 in polling_tasks.keys())
self.mgr.interval_task(polling_tasks.get(60))
self.assertEqual(1, len(self.Pollster.samples))
self.assertEqual(['discovered_1', 'discovered_2'],
@ -612,7 +612,7 @@ class BaseAgentManagerTestCase(base.BaseTestCase):
self.setup_pipeline()
polling_tasks = self.mgr.setup_polling_tasks()
self.assertEqual(1, len(polling_tasks))
self.assertIn(60, polling_tasks.keys())
self.assertTrue(60 in polling_tasks.keys())
self.mgr.interval_task(polling_tasks.get(60))
self.assertEqual(1, len(self.Pollster.samples))
self.assertEqual(['discovered_1', 'discovered_2'],
@ -681,7 +681,7 @@ class BaseAgentManagerTestCase(base.BaseTestCase):
polling_task = self.mgr.setup_polling_tasks().values()[0]
pollster = list(polling_task.pollster_matches['test_pipeline'])[0]
LOG = mock.MagicMock()
with mock.patch('ceilometer.agent.LOG', LOG):
with mock.patch('ceilometer.agent.base.LOG', LOG):
polling_task.poll_and_publish()
if not self.mgr.discover():
LOG.info.assert_called_with('Skip polling pollster %s, no '

View File

@ -21,14 +21,14 @@ import mock
from oslo.config import fixture as fixture_config
from oslotest import base
from ceilometer.central import discovery
from ceilometer.agent.discovery import endpoint
class TestEndpointDiscovery(base.BaseTestCase):
def setUp(self):
super(TestEndpointDiscovery, self).setUp()
self.discovery = discovery.EndpointDiscovery()
self.discovery = endpoint.EndpointDiscovery()
self.manager = mock.MagicMock()
self.CONF = self.useFixture(fixture_config.Config()).conf

View File

@ -22,10 +22,10 @@ from oslotest import base
from oslotest import mockpatch
from stevedore import extension
from ceilometer.central import manager
from ceilometer.central import plugin
from ceilometer.agent import manager
from ceilometer.agent import plugin_base
from ceilometer import pipeline
from ceilometer.tests import agentbase
from ceilometer.tests.agent import agentbase
class TestManager(base.BaseTestCase):
@ -37,7 +37,7 @@ class TestManager(base.BaseTestCase):
class TestPollsterKeystone(agentbase.TestPollster):
@plugin.check_keystone
@plugin_base.check_keystone
def get_samples(self, manager, cache, resources):
func = super(TestPollsterKeystone, self).get_samples
return func(manager=manager,
@ -111,3 +111,8 @@ class TestRunTasks(agentbase.BaseAgentManagerTestCase):
polling_tasks = self.mgr.setup_polling_tasks()
self.mgr.interval_task(polling_tasks.values()[0])
self.assertFalse(self.PollsterKeystone.samples)
def test_interval_exception_isolation(self):
super(TestRunTasks, self).test_interval_exception_isolation()
self.assertEqual(1, len(self.PollsterException.samples))
self.assertEqual(1, len(self.PollsterExceptionAnother.samples))

View File

@ -19,7 +19,7 @@ import mock
from oslo.config import fixture as fixture_config
from oslotest import base
from ceilometer import plugin
from ceilometer.agent import plugin_base
TEST_NOTIFICATION = {
@ -78,29 +78,29 @@ class NotificationBaseTestCase(base.BaseTestCase):
self.CONF = self.useFixture(fixture_config.Config()).conf
def test_handle_event_type(self):
self.assertFalse(plugin.NotificationBase._handle_event_type(
self.assertFalse(plugin_base.NotificationBase._handle_event_type(
'compute.instance.start', ['compute']))
self.assertFalse(plugin.NotificationBase._handle_event_type(
self.assertFalse(plugin_base.NotificationBase._handle_event_type(
'compute.instance.start', ['compute.*.foobar']))
self.assertFalse(plugin.NotificationBase._handle_event_type(
self.assertFalse(plugin_base.NotificationBase._handle_event_type(
'compute.instance.start', ['compute.*.*.foobar']))
self.assertTrue(plugin.NotificationBase._handle_event_type(
self.assertTrue(plugin_base.NotificationBase._handle_event_type(
'compute.instance.start', ['compute.*']))
self.assertTrue(plugin.NotificationBase._handle_event_type(
self.assertTrue(plugin_base.NotificationBase._handle_event_type(
'compute.instance.start', ['*']))
self.assertTrue(plugin.NotificationBase._handle_event_type(
self.assertTrue(plugin_base.NotificationBase._handle_event_type(
'compute.instance.start', ['compute.*.start']))
self.assertTrue(plugin.NotificationBase._handle_event_type(
self.assertTrue(plugin_base.NotificationBase._handle_event_type(
'compute.instance.start', ['*.start']))
self.assertTrue(plugin.NotificationBase._handle_event_type(
self.assertTrue(plugin_base.NotificationBase._handle_event_type(
'compute.instance.start', ['compute.*.*.foobar', 'compute.*']))
class FakePlugin(plugin.NotificationBase):
class FakePlugin(plugin_base.NotificationBase):
def get_exchange_topics(self, conf):
return [plugin.ExchangeTopics(exchange="exchange1",
topics=["t1", "t2"]),
plugin.ExchangeTopics(exchange="exchange2",
topics=['t3'])]
return [plugin_base.ExchangeTopics(exchange="exchange1",
topics=["t1", "t2"]),
plugin_base.ExchangeTopics(exchange="exchange2",
topics=['t3'])]
def process_notification(self, message):
return message

View File

@ -22,7 +22,7 @@ from oslotest import base
from oslotest import mockpatch
import six
from ceilometer.central import manager
from ceilometer.agent import manager
from ceilometer.energy import kwapi
from ceilometer.openstack.common import context

View File

@ -18,7 +18,7 @@
import fixtures
import mock
from ceilometer.central import manager
from ceilometer.agent import manager
from ceilometer.hardware.inspector import base as inspector_base
from ceilometer.tests import base as test_base

View File

@ -20,7 +20,7 @@ from oslo.config import fixture as fixture_config
from oslotest import base
from oslotest import mockpatch
from ceilometer.central import manager
from ceilometer.agent import manager
from ceilometer.image import glance
from ceilometer.openstack.common import context

View File

@ -17,11 +17,12 @@
"""
from ceilometer.ipmi import manager
from ceilometer.tests import agentbase
import mock
from oslotest import base
from ceilometer.tests.agent import agentbase
class TestManager(base.BaseTestCase):

View File

@ -19,8 +19,8 @@ import mock
from oslotest import base
from oslotest import mockpatch
from ceilometer.central import manager
from ceilometer.central import plugin
from ceilometer.agent import manager
from ceilometer.agent import plugin_base
from ceilometer.network.services import discovery
from ceilometer.network.services import fwaas
from ceilometer.openstack.common import context
@ -34,9 +34,9 @@ class _BaseTestFWPollster(base.BaseTestCase):
self.addCleanup(mock.patch.stopall)
self.context = context.get_admin_context()
self.manager = manager.AgentManager()
plugin._get_keystone = mock.Mock()
plugin._get_keystone.service_catalog.get_endpoints = mock.MagicMock(
return_value={'network': mock.ANY})
plugin_base._get_keystone = mock.Mock()
plugin_base._get_keystone.service_catalog.get_endpoints = (
mock.MagicMock(return_value={'network': mock.ANY}))
class TestFirewallPollster(_BaseTestFWPollster):

View File

@ -19,8 +19,8 @@ import mock
from oslotest import base
from oslotest import mockpatch
from ceilometer.central import manager
from ceilometer.central import plugin
from ceilometer.agent import manager
from ceilometer.agent import plugin_base
from ceilometer.network.services import discovery
from ceilometer.network.services import lbaas
from ceilometer.openstack.common import context
@ -34,9 +34,9 @@ class _BaseTestLBPollster(base.BaseTestCase):
self.addCleanup(mock.patch.stopall)
self.context = context.get_admin_context()
self.manager = manager.AgentManager()
plugin._get_keystone = mock.Mock()
plugin._get_keystone.service_catalog.get_endpoints = mock.MagicMock(
return_value={'network': mock.ANY})
plugin_base._get_keystone = mock.Mock()
plugin_base._get_keystone.service_catalog.get_endpoints = (
mock.MagicMock(return_value={'network': mock.ANY}))
class TestLBPoolPollster(_BaseTestLBPollster):

View File

@ -19,8 +19,8 @@ import mock
from oslotest import base
from oslotest import mockpatch
from ceilometer.central import manager
from ceilometer.central import plugin
from ceilometer.agent import manager
from ceilometer.agent import plugin_base
from ceilometer.network.services import discovery
from ceilometer.network.services import vpnaas
from ceilometer.openstack.common import context
@ -34,9 +34,9 @@ class _BaseTestVPNPollster(base.BaseTestCase):
self.addCleanup(mock.patch.stopall)
self.context = context.get_admin_context()
self.manager = manager.AgentManager()
plugin._get_keystone = mock.Mock()
plugin._get_keystone.service_catalog.get_endpoints = mock.MagicMock(
return_value={'network': mock.ANY})
plugin_base._get_keystone = mock.Mock()
plugin_base._get_keystone.service_catalog.get_endpoints = (
mock.MagicMock(return_value={'network': mock.ANY}))
class TestVPNServicesPollster(_BaseTestVPNPollster):

View File

@ -22,7 +22,7 @@
import mock
from oslotest import base
from ceilometer.central import manager
from ceilometer.agent import manager
from ceilometer.network import floatingip
from ceilometer.openstack.common import context

View File

@ -25,7 +25,7 @@ from oslotest import mockpatch
from swiftclient import client as swift_client
import testscenarios.testcase
from ceilometer.central import manager
from ceilometer.agent import manager
from ceilometer.objectstore import swift
HEAD_ACCOUNTS = [('tenant-000', {'x-account-object-count': 12,

View File

@ -21,7 +21,7 @@ events.
from oslo.config import cfg
import oslo.messaging
from ceilometer import plugin
from ceilometer.agent import plugin_base
from ceilometer import sample
OPTS = [
@ -34,7 +34,7 @@ OPTS = [
cfg.CONF.register_opts(OPTS)
class VolumeBase(plugin.NotificationBase):
class VolumeBase(plugin_base.NotificationBase):
"""Convert volume/snapshot notification into Counters."""
@staticmethod
@ -149,4 +149,4 @@ class SnapshotSize(SnapshotCRUDBase):
user_id=message['payload']['user_id'],
project_id=message['payload']['tenant_id'],
resource_id=message['payload']['snapshot_id'],
message=message)
message=message)

View File

@ -93,8 +93,8 @@ ceilometer.notification =
ceilometer.discover =
local_instances = ceilometer.compute.discovery:InstanceDiscovery
endpoint = ceilometer.central.discovery:EndpointDiscovery
tenant = ceilometer.central.discovery:TenantDiscovery
endpoint = ceilometer.agent.discovery.endpoint:EndpointDiscovery
tenant = ceilometer.agent.discovery.tenant:TenantDiscovery
lb_pools = ceilometer.network.services.discovery:LBPoolsDiscovery
lb_vips = ceilometer.network.services.discovery:LBVipsDiscovery
lb_members = ceilometer.network.services.discovery:LBMembersDiscovery