diff options
author | Eric Windisch <eric@cloudscaling.com> | 2013-01-08 11:44:27 -0500 |
---|---|---|
committer | Eric Windisch <eric@cloudscaling.com> | 2013-01-08 11:47:22 -0500 |
commit | f17902a78a5e4118a111efe7335b00328d48b339 (patch) | |
tree | ebd456b08031e50c63d4a2e964e28b9f37602661 /bin | |
parent | 803f2b0ed6f11ac108aadf569dae7a0ffcbc2587 (diff) | |
download | oslo-f17902a78a5e4118a111efe7335b00328d48b339.tar.gz oslo-f17902a78a5e4118a111efe7335b00328d48b339.tar.xz oslo-f17902a78a5e4118a111efe7335b00328d48b339.zip |
Add zmq receiver binary
The impl_zmq rpc driver requires a
binary running on all hosts. Previously
residing in nova, this binary is being
moved into oslo-incubator.
Change-Id: I3f38374b71794029550147ed4fc75f0fd63adf75
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/oslo-zmq-receiver | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/bin/oslo-zmq-receiver b/bin/oslo-zmq-receiver new file mode 100755 index 0000000..4ef24b6 --- /dev/null +++ b/bin/oslo-zmq-receiver @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2011 OpenStack LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import eventlet +eventlet.monkey_patch() + +import contextlib +import os +import sys + +import zmq + +# If ../oslo/__init__.py exists, add ../ to Python search path, so that +# 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]), + os.pardir, + os.pardir)) +if os.path.exists(os.path.join(POSSIBLE_TOPDIR, 'oslo', '__init__.py')): + sys.path.insert(0, POSSIBLE_TOPDIR) + +from openstack.common import cfg +from openstack.common import log as logging +from openstack.common import rpc +from openstack.common.rpc import impl_zmq +from openstack.common import processutils as utils + +CONF = cfg.CONF +CONF.register_opts(rpc.rpc_opts) +CONF.register_opts(impl_zmq.zmq_opts) +CONF(sys.argv[1:], project='oslo') + + +def main(): + logging.setup("oslo") + + 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: + 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.wait() + +if __name__ == '__main__': + main() |