Sync rpc from oslo-incubator.
This includes the following changes: * use oslo.config directly * implementation of rpc-amqp-fast-reply-queue * simplifications to bin/nova-rpc-zmq-receiver * add new join_consumer_pool API call * a bug fix to ensure kombu messages get acked even when an exception occurs in the message callback Change-Id: I813ce0ee7d5442d7b5b0f9d477949adabc83174e
This commit is contained in:
@@ -22,9 +22,6 @@ import contextlib
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from oslo.config import cfg
|
|
||||||
import zmq
|
|
||||||
|
|
||||||
# If ../nova/__init__.py exists, add ../ to Python search path, so that
|
# If ../nova/__init__.py exists, add ../ to Python search path, so that
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
@@ -33,45 +30,22 @@ POSSIBLE_TOPDIR = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
|||||||
if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'nova', '__init__.py')):
|
if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'nova', '__init__.py')):
|
||||||
sys.path.insert(0, POSSIBLE_TOPDIR)
|
sys.path.insert(0, POSSIBLE_TOPDIR)
|
||||||
|
|
||||||
from nova import config
|
from oslo.config import cfg
|
||||||
from nova import exception
|
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
from nova.openstack.common import rpc
|
from nova.openstack.common import rpc
|
||||||
from nova.openstack.common.rpc import impl_zmq
|
from nova.openstack.common.rpc import impl_zmq
|
||||||
from nova import utils
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
CONF.register_opts(rpc.rpc_opts)
|
CONF.register_opts(rpc.rpc_opts)
|
||||||
CONF.register_opts(impl_zmq.zmq_opts)
|
CONF.register_opts(impl_zmq.zmq_opts)
|
||||||
|
CONF(sys.argv[1:], project='nova')
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
config.parse_args(sys.argv)
|
|
||||||
logging.setup("nova")
|
logging.setup("nova")
|
||||||
utils.monkey_patch()
|
|
||||||
|
|
||||||
ipc_dir = CONF.rpc_zmq_ipc_dir
|
|
||||||
|
|
||||||
# Create the necessary directories/files for this service.
|
|
||||||
if not os.path.isdir(ipc_dir):
|
|
||||||
try:
|
|
||||||
utils.execute('mkdir', '-p', ipc_dir, run_as_root=True)
|
|
||||||
utils.execute('chown', "%s:%s" % (os.getuid(), os.getgid()),
|
|
||||||
ipc_dir, run_as_root=True)
|
|
||||||
utils.execute('chmod', '750', ipc_dir, run_as_root=True)
|
|
||||||
except exception.ProcessExecutionError:
|
|
||||||
logging.error(_("Could not create IPC socket directory."))
|
|
||||||
return
|
|
||||||
|
|
||||||
with contextlib.closing(impl_zmq.ZmqProxy(CONF)) as reactor:
|
with contextlib.closing(impl_zmq.ZmqProxy(CONF)) as reactor:
|
||||||
consume_in = "tcp://%s:%s" % \
|
|
||||||
(CONF.rpc_zmq_bind_address,
|
|
||||||
CONF.rpc_zmq_port)
|
|
||||||
consumption_proxy = impl_zmq.InternalContext(None)
|
|
||||||
|
|
||||||
reactor.register(consumption_proxy,
|
|
||||||
consume_in, zmq.PULL, out_bind=True)
|
|
||||||
|
|
||||||
reactor.consume_in_thread()
|
reactor.consume_in_thread()
|
||||||
reactor.wait()
|
reactor.wait()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user