コード例 #1
0
ファイル: wsgi.py プロジェクト: gaolichuang/py-essential
import webob.exc

from essential.config import cfg
from essential.db.sqlalchemy import session
from essential import gettextutils
from essential import jsonutils
from essential import log as logging
from essential.service import ProcessLauncher

from framework.common import constants
from framework.common import exceptions as exception
from framework import context

socket_opts = [
    cfg.IntOpt('backlog',
               default=4096,
               help=_("Number of backlog requests to configure "
                      "the socket with")),
    cfg.IntOpt('tcp_keepidle',
               default=600,
               help=_("Sets the value of TCP_KEEPIDLE in seconds for each "
                      "server socket. Not supported on OS X.")),
    cfg.IntOpt('retry_until_window',
               default=30,
               help=_("Number of seconds to keep retrying to listen")),
    cfg.BoolOpt('use_ssl',
                default=False,
                help=_('Enable SSL on the API server')),
    cfg.StrOpt('ssl_ca_file',
               default=None,
               help=_("CA certificate file to use to verify "
                      "connecting clients")),
コード例 #2
0
            'be available on some distributions.'),
 cfg.StrOpt('kombu_ssl_keyfile',
            default='',
            help='SSL key file (valid only if SSL enabled)'),
 cfg.StrOpt('kombu_ssl_certfile',
            default='',
            help='SSL cert file (valid only if SSL enabled)'),
 cfg.StrOpt('kombu_ssl_ca_certs',
            default='',
            help=('SSL certification authority file '
                  '(valid only if SSL enabled)')),
 cfg.StrOpt('rabbit_host',
            default='localhost',
            help='The RabbitMQ broker address where a single node is used'),
 cfg.IntOpt('rabbit_port',
            default=5672,
            help='The RabbitMQ broker port where a single node is used'),
 cfg.ListOpt('rabbit_hosts',
             default=['$rabbit_host:$rabbit_port'],
             help='RabbitMQ HA cluster host:port pairs'),
 cfg.BoolOpt('rabbit_use_ssl',
             default=False,
             help='Connect over SSL for RabbitMQ'),
 cfg.StrOpt('rabbit_userid', default='guest', help='The RabbitMQ userid'),
 cfg.StrOpt('rabbit_password',
            default='guest',
            help='The RabbitMQ password',
            secret=True),
 cfg.StrOpt('rabbit_virtual_host',
            default='/',
            help='The RabbitMQ virtual host'),
コード例 #3
0
ファイル: options.py プロジェクト: gaolichuang/py-essential
                             cfg.DeprecatedOpt('sql_connection',
                                               group='DATABASE'),
                             cfg.DeprecatedOpt('connection',
                                               group='sql'), ]),
 cfg.StrOpt('mysql_sql_mode',
            default='TRADITIONAL',
            help='The SQL mode to be used for MySQL sessions. '
                 'This option, including the default, overrides any '
                 'server-set SQL mode. To use whatever SQL mode '
                 'is set by the server configuration, '
                 'set this to no value. Example: mysql_sql_mode='),
 cfg.IntOpt('idle_timeout',
            default=3600,
            deprecated_opts=[cfg.DeprecatedOpt('sql_idle_timeout',
                                               group='DEFAULT'),
                             cfg.DeprecatedOpt('sql_idle_timeout',
                                               group='DATABASE'),
                             cfg.DeprecatedOpt('idle_timeout',
                                               group='sql')],
            help='Timeout before idle sql connections are reaped'),
 cfg.IntOpt('min_pool_size',
            default=1,
            deprecated_opts=[cfg.DeprecatedOpt('sql_min_pool_size',
                                               group='DEFAULT'),
                             cfg.DeprecatedOpt('sql_min_pool_size',
                                               group='DATABASE')],
            help='Minimum number of SQL connections to keep open in a '
                 'pool'),
 cfg.IntOpt('max_pool_size',
            default=None,
            deprecated_opts=[cfg.DeprecatedOpt('sql_max_pool_size',
コード例 #4
0
"""
Request Body limiting middleware.

"""

import webob.dec
import webob.exc

from essential.config import cfg
from essential.gettextutils import _
from essential.middleware import base

#default request size is 112k
max_req_body_size = cfg.IntOpt('max_request_body_size',
                               deprecated_name='osapi_max_request_body_size',
                               default=114688,
                               help='The maximum body size '
                               'per request, in bytes')

CONF = cfg.CONF
CONF.register_opt(max_req_body_size)


class LimitingReader(object):
    """Reader to limit the size of an incoming request."""
    def __init__(self, data, limit):
        """Initiates LimitingReader object.

        :param data: Underlying data object
        :param limit: maximum number of bytes the reader should allow
        """
コード例 #5
0
"""
The MatchMaker classes should accept a Topic or Fanout exchange key and
return keys for direct exchanges, per (approximate) AMQP parlance.
"""

from essential.config import cfg
from essential import importutils
from essential import log as logging
from essential.rpc import matchmaker as mm_common

redis = importutils.try_import('redis')

matchmaker_redis_opts = [
    cfg.StrOpt('host', default='127.0.0.1', help='Host to locate redis'),
    cfg.IntOpt('port',
               default=6379,
               help='Use this port to connect to redis host.'),
    cfg.StrOpt('password',
               default=None,
               help='Password for Redis server. (optional)'),
]

CONF = cfg.CONF
opt_group = cfg.OptGroup(name='matchmaker_redis',
                         title='Options for Redis-based MatchMaker')
CONF.register_group(opt_group)
CONF.register_opts(matchmaker_redis_opts, opt_group)
LOG = logging.getLogger(__name__)


class RedisExchange(mm_common.Exchange):
コード例 #6
0
from essential import log as logging
from essential.rpc import amqp as rpc_amqp
from essential.rpc import common as rpc_common

qpid_codec = importutils.try_import("qpid.codec010")
qpid_messaging = importutils.try_import("qpid.messaging")
qpid_exceptions = importutils.try_import("qpid.messaging.exceptions")

LOG = logging.getLogger(__name__)

qpid_opts = [
    cfg.StrOpt('qpid_hostname',
               default='localhost',
               help='Qpid broker hostname'),
    cfg.IntOpt('qpid_port',
               default=5672,
               help='Qpid broker port'),
    cfg.ListOpt('qpid_hosts',
                default=['$qpid_hostname:$qpid_port'],
                help='Qpid HA cluster host:port pairs'),
    cfg.StrOpt('qpid_username',
               default='',
               help='Username for qpid connection'),
    cfg.StrOpt('qpid_password',
               default='',
               help='Password for qpid connection',
               secret=True),
    cfg.StrOpt('qpid_sasl_mechanisms',
               default='',
               help='Space separated list of SASL mechanisms to use for auth'),
    cfg.IntOpt('qpid_heartbeat',
コード例 #7
0
"""
The MatchMaker classes should except a Topic or Fanout exchange key and
return keys for direct exchanges, per (approximate) AMQP parlance.
"""

import contextlib

import eventlet

from essential.config import cfg
from essential.gettextutils import _, _LI
from essential import log as logging

matchmaker_opts = [
    cfg.IntOpt('matchmaker_heartbeat_freq',
               default=300,
               help='Heartbeat frequency'),
    cfg.IntOpt('matchmaker_heartbeat_ttl',
               default=600,
               help='Heartbeat time-to-live.'),
]

CONF = cfg.CONF
CONF.register_opts(matchmaker_opts)
LOG = logging.getLogger(__name__)
contextmanager = contextlib.contextmanager


class MatchMakerException(Exception):
    """Signified a match could not be found."""
    message = _("Match not found by MatchMaker.")
コード例 #8
0
    rpc.dispatcher
    rpc.proxy
"""

from essential.config import cfg
from essential import importutils
from essential import log as logging

LOG = logging.getLogger(__name__)

rpc_opts = [
    cfg.StrOpt('rpc_backend',
               default='%s.impl_kombu' % __package__,
               help="The messaging module to use, defaults to kombu."),
    cfg.IntOpt('rpc_thread_pool_size',
               default=64,
               help='Size of RPC thread pool'),
    cfg.IntOpt('rpc_conn_pool_size',
               default=30,
               help='Size of RPC connection pool'),
    cfg.IntOpt('rpc_response_timeout',
               default=60,
               help='Seconds to wait for a response from call or multicall'),
    cfg.IntOpt('rpc_cast_timeout',
               default=30,
               help='Seconds to wait before a cast expires (TTL). '
               'Only supported by impl_zmq.'),
    cfg.ListOpt('allowed_rpc_exception_modules',
                default=[
                    'nova.exception',
                    'cinder.exception',
コード例 #9
0
    cfg.StrOpt('rpc_zmq_bind_address', default='*',
               help='ZeroMQ bind address. Should be a wildcard (*), '
                    'an ethernet interface, or IP. '
                    'The "host" option should point or resolve to this '
                    'address.'),

    # The module.Class to use for matchmaking.
    cfg.StrOpt(
        'rpc_zmq_matchmaker',
        default=('essential.rpc.'
                 'matchmaker.MatchMakerLocalhost'),
        help='MatchMaker driver',
    ),

    # The following port is unassigned by IANA as of 2012-05-21
    cfg.IntOpt('rpc_zmq_port', default=9501,
               help='ZeroMQ receiver listening port'),

    cfg.IntOpt('rpc_zmq_contexts', default=1,
               help='Number of ZeroMQ contexts, defaults to 1'),

    cfg.IntOpt('rpc_zmq_topic_backlog', default=None,
               help='Maximum number of ingress messages to locally buffer '
                    'per topic. Default is unlimited.'),

    cfg.StrOpt('rpc_zmq_ipc_dir', default='/var/run/openstack',
               help='Directory for holding IPC sockets'),

    cfg.StrOpt('rpc_zmq_host', default=socket.gethostname(),
               help='Name of this node. Must be a valid hostname, FQDN, or '
                    'IP address. Must match "host" option, if running Nova.')
]