def notify(message): """Notifies the recipient of the desired event given the model. Log notifications using cinder's default logging system""" priority = message.get("priority", FLAGS.default_notification_level) priority = priority.lower() logger = logging.getLogger("cinder.notification.%s" % message["event_type"]) getattr(logger, priority)(json.dumps(message))
def setUp(self): super(JSONFormatterTestCase, self).setUp() self.log = log.getLogger('test-json') self.stream = cStringIO.StringIO() handler = logging.StreamHandler(self.stream) handler.setFormatter(log.JSONFormatter()) self.log.logger.addHandler(handler) self.log.logger.setLevel(logging.DEBUG)
def setUp(self): super(CinderLoggerTestCase, self).setUp() levels = FLAGS.default_log_levels levels.append("cinder-test=AUDIT") self.flags(default_log_levels=levels, verbose=True) log.setup() self.log = log.getLogger('cinder-test')
def setUp(self): super(CinderFormatterTestCase, self).setUp() self.flags(logging_context_format_string="HAS CONTEXT " "[%(request_id)s]: " "%(message)s", logging_default_format_string="NOCTXT: %(message)s", logging_debug_format_suffix="--DBG") self.log = log.getLogger() self.stream = cStringIO.StringIO() self.handler = logging.StreamHandler(self.stream) self.handler.setFormatter(log.LegacyCinderFormatter()) self.log.logger.addHandler(self.handler) self.level = self.log.logger.getEffectiveLevel() self.log.logger.setLevel(logging.DEBUG)
def setUp(self): super(DriverTestCase, self).setUp() self.flags(volume_driver=self.driver_name, logging_default_format_string="%(message)s") self.volume = importutils.import_object(FLAGS.volume_manager) self.context = context.get_admin_context() self.output = "" def _fake_execute(_command, *_args, **_kwargs): """Fake _execute.""" return self.output, None self.volume.driver.set_execute(_fake_execute) log = logging.getLogger() self.stream = cStringIO.StringIO() log.logger.addHandler(logging.logging.StreamHandler(self.stream))
def test_error_notification(self): self.stubs.Set(cinder.flags.FLAGS, 'notification_driver', 'cinder.notifier.rabbit_notifier') self.stubs.Set(cinder.flags.FLAGS, 'publish_errors', True) LOG = log.getLogger('cinder') log.setup() msgs = [] def mock_notify(context, topic, data): msgs.append(data) self.stubs.Set(cinder.openstack.common.rpc, 'notify', mock_notify) LOG.error('foo') self.assertEqual(1, len(msgs)) msg = msgs[0] self.assertEqual(msg['event_type'], 'error_notification') self.assertEqual(msg['priority'], 'ERROR') self.assertEqual(msg['payload']['error'], 'foo')
def __init__(self, name, app, host=None, port=None, pool_size=None, protocol=eventlet.wsgi.HttpProtocol): """Initialize, but do not start, a WSGI server. :param name: Pretty name for logging. :param app: The WSGI application to serve. :param host: IP address to serve the application. :param port: Port number to server the application. :param pool_size: Maximum number of eventlets to spawn concurrently. :returns: None """ self.name = name self.app = app self.host = host or "0.0.0.0" self.port = port or 0 self._server = None self._socket = None self._protocol = protocol self._pool = eventlet.GreenPool(pool_size or self.default_pool_size) self._logger = logging.getLogger("eventlet.wsgi.server") self._wsgi_logger = logging.WritableLogger(self._logger)
def setUp(self): super(NotifierListTestCase, self).setUp() list_notifier._reset_drivers() # Mock log to add one to exception_count when log.exception is called def mock_exception(cls, *args): self.exception_count += 1 self.exception_count = 0 list_notifier_log = logging.getLogger('cinder.notifier.list_notifier') self.stubs.Set(list_notifier_log, "exception", mock_exception) # Mock no_op notifier to add one to notify_count when called. def mock_notify(cls, *args): self.notify_count += 1 self.notify_count = 0 self.stubs.Set(cinder.notifier.no_op_notifier, 'notify', mock_notify) # Mock log_notifier to raise RuntimeError when called. def mock_notify2(cls, *args): raise RuntimeError("Bad notifier.") self.stubs.Set(cinder.notifier.log_notifier, 'notify', mock_notify2)
import webob.dec import webob.exc import cinder.api.openstack from cinder.api.openstack import wsgi from cinder.api.openstack import xmlutil from cinder import exception from cinder import flags from cinder import log as logging from cinder.openstack.common import exception as common_exception from cinder.openstack.common import importutils import cinder.policy LOG = logging.getLogger(__name__) FLAGS = flags.FLAGS class ExtensionDescriptor(object): """Base class that defines the contract for extensions. Note that you don't have to derive from this class to have a valid extension; it is purely a convenience. """ # The name of the extension, e.g., 'Fox In Socks' name = None # The alias for the extension, e.g., 'FOXNSOX'
""" Tests for NetApp volume driver """ import BaseHTTPServer import httplib import StringIO from lxml import etree from cinder import log as logging from cinder import test from cinder.volume import netapp LOG = logging.getLogger("cinder.volume.driver") WSDL_HEADER = """<?xml version="1.0" encoding="UTF-8" standalone="no"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:na="http://www.netapp.com/management/v1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="NetAppDfm" targetNamespace="http://www.netapp.com/management/v1">""" WSDL_TYPES = """<types> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.netapp.com/management/v1"> <xsd:element name="ApiProxy"> <xsd:complexType> <xsd:all>
import ConfigParser import commands import os import unittest import urlparse from migrate.versioning import repository import sqlalchemy import cinder.db.sqlalchemy.migrate_repo from cinder.db.sqlalchemy.migration import versioning_api as migration_api from cinder import log as logging from cinder import test LOG = logging.getLogger('cinder.tests.test_migrations') def _mysql_get_connect_string(user="******", passwd="openstack_citest", database="openstack_citest"): """ Try to get a connection with a very specfic set of values, if we get these then we'll run the mysql tests, otherwise they are skipped """ return "mysql://%(user)s:%(passwd)s@localhost/%(database)s" % locals() def _is_mysql_avail(user="******", passwd="openstack_citest", database="openstack_citest"):
def setUp(self): super(LoggerTestCase, self).setUp() self.log = log.getLogger()
def test_child_log_has_level_of_parent_flag(self): l = log.getLogger('cinder-test.foo') self.assertEqual(logging.AUDIT, l.logger.getEffectiveLevel())
# under the License. """ :mod:`nexenta.jsonrpc` -- Nexenta-specific JSON RPC client ===================================================================== .. automodule:: nexenta.jsonrpc .. moduleauthor:: Yuriy Taraday <*****@*****.**> """ import json import urllib2 from cinder.volume import nexenta from cinder import log as logging LOG = logging.getLogger("cinder.volume.nexenta.jsonrpc") class NexentaJSONException(nexenta.NexentaException): pass class NexentaJSONProxy(object): def __init__(self, url, user, password, auto=False, obj=None, method=None): self.url = url self.user = user self.password = password self.auto = auto self.obj = obj self.method = method
This rountine can be used to find and delete stale lock files from cinder's interprocess synchroization. It can be used safely while services are running. """ import logging import optparse from cinder import flags from cinder import log from cinder import utils LOG = log.getLogger('cinder.utils') FLAGS = flags.FLAGS def parse_options(): """process command line options.""" parser = optparse.OptionParser('usage: %prog [options]') parser.add_option('--verbose', action='store_true', help='List lock files found and deleted') options, args = parser.parse_args() return options, args
:mod:`nexenta.volume` -- Driver to store volumes on Nexenta Appliance ===================================================================== .. automodule:: nexenta.volume .. moduleauthor:: Yuriy Taraday <*****@*****.**> """ from cinder import exception from cinder import flags from cinder import log as logging from cinder.openstack.common import cfg from cinder.volume import driver from cinder.volume import nexenta from cinder.volume.nexenta import jsonrpc LOG = logging.getLogger("cinder.volume.nexenta.volume") FLAGS = flags.FLAGS nexenta_opts = [ cfg.StrOpt('nexenta_host', default='', help='IP address of Nexenta SA'), cfg.IntOpt('nexenta_rest_port', default=2000, help='HTTP port to connect to Nexenta REST API server'), cfg.StrOpt('nexenta_rest_protocol', default='auto', help='Use http or https for REST connection (default auto)'), cfg.StrOpt('nexenta_user', default='admin', help='User name to connect to Nexenta SA'),