Forwarding device for the plugins.
Change-Id: Ieec2ed8aca84c67bd1aa3f0d2a53cce09d0497b9
This commit is contained in:
parent
863085890f
commit
c474fe79d3
|
@ -0,0 +1,77 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Author: François Rossigneux <francois.rossigneux@inria.fr>
|
||||
#
|
||||
# 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 signal
|
||||
import sys
|
||||
|
||||
from oslo.config import cfg
|
||||
import zmq
|
||||
|
||||
from kwapi.openstack.common import log
|
||||
|
||||
forwarder_opts = [
|
||||
cfg.MultiStrOpt('probes_endpoint',
|
||||
required=True,
|
||||
),
|
||||
cfg.StrOpt('forwarder_endpoint',
|
||||
required=True,
|
||||
),
|
||||
]
|
||||
|
||||
cfg.CONF.register_opts(forwarder_opts)
|
||||
|
||||
|
||||
def forwarder():
|
||||
"""Listens probes_endpoints and forwards messages to the plugins."""
|
||||
LOG = log.getLogger('kwapi')
|
||||
LOG.info('Collector listenig to %s' % cfg.CONF.probes_endpoint)
|
||||
context = zmq.Context.instance()
|
||||
frontend = context.socket(zmq.XPUB)
|
||||
frontend.bind(cfg.CONF.forwarder_endpoint)
|
||||
backend = context.socket(zmq.XSUB)
|
||||
for endpoint in cfg.CONF.probes_endpoint:
|
||||
backend.connect(endpoint)
|
||||
poll = zmq.Poller()
|
||||
poll.register(frontend, zmq.POLLIN)
|
||||
poll.register(backend, zmq.POLLIN)
|
||||
while True:
|
||||
items = dict(poll.poll(1000))
|
||||
if items.get(backend) == zmq.POLLIN:
|
||||
msg = backend.recv_multipart()
|
||||
frontend.send_multipart(msg)
|
||||
elif items.get(frontend) == zmq.POLLIN:
|
||||
msg = frontend.recv()
|
||||
backend.send(msg)
|
||||
|
||||
|
||||
def signal_handler(signum, frame):
|
||||
"""Intercepts TERM signal."""
|
||||
if signum is signal.SIGTERM:
|
||||
raise KeyboardInterrupt
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
cfg.CONF(sys.argv[1:],
|
||||
project='kwapi',
|
||||
default_config_files=['/etc/kwapi/forwarder.conf']
|
||||
)
|
||||
log.setup('kwapi')
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
try:
|
||||
forwarder()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
|
@ -35,6 +35,5 @@ if __name__ == '__main__':
|
|||
project='kwapi',
|
||||
default_config_files=['/etc/kwapi/rrd.conf'])
|
||||
log.setup('kwapi')
|
||||
|
||||
root = app.make_app()
|
||||
root.run(host='0.0.0.0', port=cfg.CONF.rrd_port)
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
[DEFAULT]
|
||||
|
||||
# ACL
|
||||
acl_enabled = true
|
||||
policy_file = /etc/kwapi/policy.json
|
||||
# Communication
|
||||
api_port = 5000
|
||||
probes_endpoint = ipc:///tmp/kwapi-forwarder
|
||||
|
||||
# Signature
|
||||
signature_checking = true
|
||||
driver_metering_secret = Change This Or Be Hacked
|
||||
|
||||
# Communication
|
||||
api_port = 5000
|
||||
probes_endpoint = ipc:///tmp/kwapi
|
||||
# ACL
|
||||
acl_enabled = true
|
||||
policy_file = /etc/kwapi/policy.json
|
||||
|
||||
# Timers
|
||||
cleaning_interval = 300
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
[DEFAULT]
|
||||
|
||||
# Communication
|
||||
probes_endpoint = ipc:///tmp/kwapi
|
||||
probes_endpoint = ipc:///tmp/kwapi-drivers
|
||||
|
||||
# Signature
|
||||
enable_signing = true
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
# Kwapi config file
|
||||
|
||||
[DEFAULT]
|
||||
|
||||
# Communication
|
||||
forwarder_endpoint = ipc:///tmp/kwapi-forwarder
|
||||
probes_endpoint = ipc:///tmp/kwapi-drivers
|
||||
|
||||
# Log files
|
||||
log_file = /tmp/kwapi-forwarder.log
|
||||
verbose = true
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
# Communication
|
||||
rrd_port = 8080
|
||||
probes_endpoint = ipc:///tmp/kwapi
|
||||
probes_endpoint = ipc:///tmp/kwapi-forwarder
|
||||
|
||||
# Signature
|
||||
signature_checking = true
|
||||
|
|
Loading…
Reference in New Issue