Skip to content
This repository has been archived by the owner on Jan 31, 2020. It is now read-only.

Commit

Permalink
Merge pull request #28 from mark-burnett/remove-command-base
Browse files Browse the repository at this point in the history
Remove CommandBase
  • Loading branch information
mark-burnett committed Jun 10, 2014
2 parents 23e42e6 + 8131207 commit 219b6b3
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 173 deletions.
6 changes: 3 additions & 3 deletions devserver
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ def _start_api_server(port, debug, logdir, cover):

def _start_petri_worker(logdir, cover):
if cover:
command_line = ['coverage', 'run', 'ptero_petri/implementation/main.py',
'orchestrator']
command_line = ['coverage', 'run',
'ptero_petri/implementation/orchestrator/main.py']
else:
command_line = ['ptero', 'orchestrator']
command_line = ['petri-orchestrator']

return _subprocess_with_logs(logdir, 'orchestrator', command_line)

Expand Down
81 changes: 0 additions & 81 deletions ptero_petri/implementation/command_base.py

This file was deleted.

16 changes: 10 additions & 6 deletions ptero_petri/implementation/configuration/inject/initialize.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
import injector
from .broker import BrokerConfiguration
from .redis_conf import RedisConfiguration
from .service_locator import ServiceLocatorConfiguration


INJECTOR = injector.Injector()


def initialize_injector(command_class=None):
if command_class:
args = command_class.injector_modules
else:
args = []
def initialize_injector():
injector_modules = [
BrokerConfiguration,
RedisConfiguration,
ServiceLocatorConfiguration,
]

add_modules(INJECTOR, *args)
add_modules(INJECTOR, *injector_modules)

return INJECTOR

Expand Down
16 changes: 0 additions & 16 deletions ptero_petri/implementation/configuration/parser.py

This file was deleted.

40 changes: 14 additions & 26 deletions ptero_petri/implementation/orchestrator/command.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,16 @@
from ..configuration.inject.broker import BrokerConfiguration
from ..configuration.inject.redis_conf import RedisConfiguration
from ..configuration.inject.service_locator import ServiceLocatorConfiguration
from .handlers import PetriCreateTokenHandler
from .handlers import PetriNotifyPlaceHandler
from .handlers import PetriNotifyTransitionHandler
from .service_command import ServiceCommand
import logging
from injector import inject
from ptero_petri.implementation import interfaces
from ptero_petri.implementation.orchestrator.handlers import PetriCreateTokenHandler
from ptero_petri.implementation.orchestrator.handlers import PetriNotifyPlaceHandler
from ptero_petri.implementation.orchestrator.handlers import PetriNotifyTransitionHandler


LOG = logging.getLogger(__name__)


class OrchestratorCommand(ServiceCommand):
injector_modules = [
BrokerConfiguration,
RedisConfiguration,
ServiceLocatorConfiguration,
]

def _setup(self, *args, **kwargs):
self.handlers = [
self.injector.get(PetriCreateTokenHandler),
self.injector.get(PetriNotifyPlaceHandler),
self.injector.get(PetriNotifyTransitionHandler)
]

return ServiceCommand._setup(self, *args, **kwargs)
@inject(storage=interfaces.IStorage, broker=interfaces.IBroker,
create_token_handler=PetriCreateTokenHandler,
notify_place_handler=PetriNotifyPlaceHandler,
notify_transition_handler=PetriNotifyTransitionHandler)
class OrchestratorCommand(object):
def __init__(self):
self.broker.register_handler(self.create_token_handler)
self.broker.register_handler(self.notify_place_handler)
self.broker.register_handler(self.notify_transition_handler)
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from ptero_petri.implementation import exit_codes
from ptero_petri.implementation.configuration.commands import determine_command
from ptero_petri.implementation.configuration.inject.initialize import initialize_injector
from ptero_petri.implementation.configuration.parser import parse_arguments
from ptero_petri.implementation.orchestrator.command import OrchestratorCommand
from ptero_petri.implementation.util import signal_handlers
from twisted.internet import reactor
import logging
import os
import pika
Expand Down Expand Up @@ -36,28 +36,22 @@ def _get_logging_level():
def naked_main():
logging.basicConfig(level=_get_logging_level())

command_class = determine_command()
parsed_args = parse_arguments(command_class)

injector = initialize_injector(command_class)
injector = initialize_injector()

# XXX Hack to get the command to show up in the rabbitmq admin interface
pika.connection.PRODUCT = command_class.name
pika.connection.PRODUCT = 'orchestrator'

try:
LOG.info('Loading command (%s)', command_class.name)
command = injector.get(command_class)
LOG.info('Instantiating orchestrator comand...')
command = injector.get(OrchestratorCommand)
except:
LOG.exception('Could not instantiate command object.')
return exit_codes.EXECUTE_ERROR

try:
exit_code = command.execute(parsed_args)
except:
LOG.exception('Command execution failed')
return exit_codes.EXECUTE_FAILURE
reactor.run()

return exit_code
LOG.info('Orchestrator exiting...')
return exit_codes.EXECUTE_FAILURE


if __name__ == '__main__':
Expand Down
23 changes: 0 additions & 23 deletions ptero_petri/implementation/orchestrator/service_command.py

This file was deleted.

4 changes: 1 addition & 3 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@ setup-hooks =

[entry_points]
console_scripts =
ptero = ptero_petri.implementation.main:main
petri-dot = ptero_petri.implementation.visualize:main
ptero.commands =
orchestrator = ptero_petri.implementation.orchestrator.command:OrchestratorCommand
petri-orchestrator = ptero_petri.implementation.orchestrator.main:main
ptero.services =
orchestrator = ptero_petri.implementation.orchestrator.service_interface:OrchestratorServiceInterface

0 comments on commit 219b6b3

Please sign in to comment.