def _run(self, application, socket): """Start a WSGI server in a new green thread.""" logger = logging.getLogger('eventlet.wsgi') eventlet.wsgi.server(socket, application, custom_pool=self.tg.pool, log=logging.WritableLogger(logger))
def notify(_context, message): """Notifies the recipient of the desired event given the model. Log notifications using openstack's default logging system""" priority = message.get("priority", CONF.default_notification_level) priority = priority.lower() logger = logging.getLogger("ceilometer.openstack.common.notification.%s" % message["event_type"]) getattr(logger, priority)(jsonutils.dumps(message))
import bson.objectid import json import pymongo from oslo.config import cfg from ceilometer.openstack.common import log from ceilometer import storage from ceilometer.storage import base from ceilometer.storage import models from ceilometer.openstack.common.gettextutils import _ cfg.CONF.import_opt('time_to_live', 'ceilometer.storage', group="database") LOG = log.getLogger(__name__) class MongoDBStorage(base.StorageEngine): """Put the data into a MongoDB database Collections:: - user - { _id: user id source: [ array of source ids reporting for the user ] } - project - { _id: project id source: [ array of source ids reporting for the project ] }
] from oslo.config import cfg from ceilometer.openstack.common import log as logging from ceilometer.compute.manager import AgentManager from nova import db as instance_info_source # This module runs inside the nova compute # agent, which only configures the "nova" logger. # We use a fake logger name in that namespace # so that messages from this module appear # in the log file. LOG = logging.getLogger('nova.ceilometer.notifier') _agent_manager = None def initialize_manager(agent_manager=None): global _agent_manager if not agent_manager: cfg.CONF(args=[], project='ceilometer', prog='ceilometer-agent') # Instantiate a manager _agent_manager = AgentManager() else: _agent_manager = agent_manager _agent_manager.setup_notifier_task()
import subprocess import simplejson from ceilometer.openstack.common import log from ceilometer.compute import notifications from ceilometer import sample LOG = log.getLogger('[Start Monitor]') #PATH is bat-agent location PATH = '/path/to/bat-agent' CONFIGURE_PATH = '%s/bat_agent/config/rpc_example.json'%PATH SCRIPT_PATH = '%s/bat_agent/rpcclient/client.py'%PATH class InstanceWakeup(notifications.ComputeNotificationBase): #instance will turn to running after below notification event_types event_types = ['compute.instance.power_on.end', 'compute.instance.resume.end', 'compute.instance.reboot.end', 'compute.instance.finish_resize.end', 'compute.instance.rebuild.end'] def process_notification(self, message): instance_properties = self.get_instance_properties(message) if isinstance(instance_properties.get('metadata'), dict): src_metadata = instance_properties['metadata'] del instance_properties['metadata'] util.add_reserved_user_metadata(src_metadata, instance_properties)
# under the License. import copy import sys import traceback from oslo.config import cfg from ceilometer.openstack.common.gettextutils import _ from ceilometer.openstack.common import importutils from ceilometer.openstack.common import jsonutils from ceilometer.openstack.common import local from ceilometer.openstack.common import log as logging CONF = cfg.CONF LOG = logging.getLogger(__name__) '''RPC Envelope Version. This version number applies to the top level structure of messages sent out. It does *not* apply to the message payload, which must be versioned independently. For example, when using rpc APIs, a version number is applied for changes to the API being exposed over rpc. This version number is handled in the rpc proxy and dispatcher modules. This version number applies to the message envelope that is used in the serialization done inside the rpc layer. See serialize_msg() and deserialize_msg(). The current message format (version 2.0) is very simple. It is: {