Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Convert hub command to BaseCommand.

  • Loading branch information...
commit 7e39ec3606712887c390eb25c6af6106568ceb41 1 parent 3dd6e58
@ralphbean authored
Showing with 34 additions and 28 deletions.
  1. +34 −28 fedmsg/commands/hub.py
View
62 fedmsg/commands/hub.py
@@ -18,27 +18,17 @@
# Authors: Ralph Bean <rbean@redhat.com>
#
import fedmsg
-from fedmsg.commands import command
+from fedmsg.commands import BaseCommand
-extra_args = [
- (['--websocket-server-port'], {
- 'dest': 'moksha.livesocket.websocket.port',
- 'type': int,
- 'help': 'Port on which to host the websocket server.',
- 'default': None,
- }),
-]
-
-@command(name="fedmsg-hub", extra_args=extra_args, daemonizable=True)
-def hub(**kw):
+class HubCommand(BaseCommand):
""" Run the fedmsg hub.
``fedmsg-hub`` is the all-purpose daemon. This should be run on every host
that has services which declare their own consumers. ``fedmsg-hub`` will
listen to every endpoint discovered by :mod:`fedmsg.config` and forward
- messages in-process to the locally-declared consumers. It is a thin wrapper
- over a moksha-hub.
+ messages in-process to the locally-declared consumers. It is a thin
+ wrapper over a moksha-hub.
Other commands like ``fedmsg-irc`` are just specialized, restricted
versions of ``fedmsg-hub``. ``fedmsg-hub`` is the most general/abstract.
@@ -46,20 +36,36 @@ def hub(**kw):
``fedmsg-hub`` also houses the functions to run a websocket server.
"""
+ name = 'fedmsg-hub'
+ daemonizable = True
+ extra_args = [
+ (['--websocket-server-port'], {
+ 'dest': 'moksha.livesocket.websocket.port',
+ 'type': int,
+ 'help': 'Port on which to host the websocket server.',
+ 'default': None,
+ }),
+ ]
+
+ def run(self):
+ # Check if the user wants the websocket server to run
+ if self.config['moksha.livesocket.websocket.port']:
+ self.config['moksha.livesocket.backend'] = 'websocket'
+
+ # Rephrase the fedmsg-config.py config as moksha *.ini format.
+ # Note that the hub we kick off here cannot send any message. You
+ # should use fedmsg.publish(...) still for that.
+ moksha_options = dict(
+ zmq_subscribe_endpoints=','.join(
+ ','.join(bunch) for bunch in self.config['endpoints'].values()
+ ),
+ )
+ self.config.update(moksha_options)
- # Check if the user wants the websocket server to run
- if kw['moksha.livesocket.websocket.port']:
- kw['moksha.livesocket.backend'] = 'websocket'
+ from moksha.hub import main
+ main(options=self.config)
- # Rephrase the fedmsg-config.py config as moksha *.ini format.
- # Note that the hub we kick off here cannot send any message. You should
- # use fedmsg.publish(...) still for that.
- moksha_options = dict(
- zmq_subscribe_endpoints=','.join(
- ','.join(bunch) for bunch in kw['endpoints'].values()
- ),
- )
- kw.update(moksha_options)
- from moksha.hub import main
- main(options=kw)
+def hub():
+ command = HubCommand()
+ command.execute()
Please sign in to comment.
Something went wrong with that request. Please try again.