The ceilometer.agent.plugin_base Module

Base class for plugins.

class ceilometer.agent.plugin_base.DiscoveryBase(conf)[source]

Bases: object

discover(manager, param=None)[source]

Discover resources to monitor.

The most fine-grained discovery should be preferred, so the work is the most evenly distributed among multiple agents (if they exist).

For example: if the pollster can separately poll individual resources, it should have its own discovery implementation to discover those resources. If it can only poll per-tenant, then the TenantDiscovery should be used. If even that is not possible, use EndpointDiscovery (see their respective docstrings).

Parameters:
  • manager – The service manager class invoking the plugin.
  • param – an optional parameter to guide the discovery
class ceilometer.agent.plugin_base.ExchangeTopics(exchange, topics)

Bases: tuple

exception ceilometer.agent.plugin_base.ExtensionLoadError[source]

Bases: exceptions.Exception

Error of loading pollster plugin.

PollsterBase provides a hook, setup_environment, called in pollster loading to setup required HW/SW dependency. Any exception from it would be propagated as ExtensionLoadError, then skip loading this pollster.

class ceilometer.agent.plugin_base.NotificationBase(manager)[source]

Bases: ceilometer.agent.plugin_base.PluginBase

Base class for plugins that support the notification API.

static audit(notifications)

RPC endpoint for useless notification level

static critical(notifications)

RPC endpoint for useless notification level

static debug(notifications)

RPC endpoint for useless notification level

static error(notifications)

RPC endpoint for useless notification level

static get_notification_topics(conf)[source]
get_targets(conf)[source]

Return a sequence of oslo.messaging.Target.

Sequence is defining the exchange and topics to be connected for this plugin. :param conf: Configuration.

info(notifications)[source]

RPC endpoint for notification messages at info level

When another service sends a notification over the message bus, this method receives it.

Parameters:notifications – list of notifications
process_notification(message)[source]

Return a sequence of Counter instances for the given message.

Parameters:message – Message to process.
sample(notifications)[source]

RPC endpoint for notification messages at sample level

When another service sends a notification over the message bus at sample priority, this method receives it.

Parameters:notifications – list of notifications
to_samples_and_publish(notification)[source]

Return samples produced by process_notification.

Samples produced for the given notification. :param context: Execution context from the service or RPC call :param notification: The notification to process.

static warn(notifications)

RPC endpoint for useless notification level

class ceilometer.agent.plugin_base.PluginBase[source]

Bases: object

Base class for all plugins.

class ceilometer.agent.plugin_base.PollsterBase(conf)[source]

Bases: ceilometer.agent.plugin_base.PluginBase

Base class for plugins that support the polling API.

classmethod build_pollsters(conf)[source]

Return a list of tuple (name, pollster).

The name is the meter name which the pollster would return, the pollster is a pollster object instance. The pollster which implements this method should be registered in the namespace of ceilometer.builder.xxx instead of ceilometer.poll.xxx.

classmethod get_pollsters_extensions(conf)[source]

Return a list of stevedore extensions.

The returned stevedore extensions wrap the pollster object instances returned by build_pollsters.

get_samples(manager, cache, resources)[source]

Return a sequence of Counter instances from polling the resources.

Parameters:
  • manager – The service manager class invoking the plugin.
  • cache – A dictionary to allow pollsters to pass data between themselves when recomputing it would be expensive (e.g., asking another service for a list of objects).
  • resources – A list of resources the pollster will get data from. It’s up to the specific pollster to decide how to use it. It is usually supplied by a discovery, see default_discovery for more information.
setup_environment()[source]

Setup required environment for pollster.

Each subclass could overwrite it for specific usage. Any exception raised in this function would prevent pollster being loaded.

exception ceilometer.agent.plugin_base.PollsterPermanentError(resources)[source]

Bases: exceptions.Exception

Permanent error when polling.

When unrecoverable error happened in polling, pollster can raise this exception with failed resource to prevent itself from polling any more. Resource is one of parameter resources from get_samples that cause polling error.