예제 #1
0
 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))
예제 #2
0
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))
예제 #3
0
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 ]
              }
예제 #4
0
]

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()

예제 #5
0
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)
예제 #6
0
#    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:

    {