summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/oslo-zmq-receiver76
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()