| # |
| # Copyright 2016 the original author or authors. |
| # |
| # 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. |
| # |
| |
| from handlers import handler_start, handler_stop |
| from structlog import get_logger |
| from jinja2 import Template |
| |
| from common.utils.dockerhelpers import EventProcessor |
| |
| class Podder(object): |
| |
| log = get_logger() |
| |
| def __init__(self, args, slave_config): |
| self.log.info('Initializing Podder') |
| self.running = False |
| self.events = EventProcessor(threads=args.threads) |
| self.handlers = { 'podder_config' : Template(slave_config) } |
| |
| def run(self): |
| if self.running: |
| return |
| self.running = True |
| |
| self.initialize() |
| |
| def shutdown(self): |
| try: |
| self.events.stop_listening() |
| except: |
| self.log.info('Shutting down') |
| |
| def initialize(self): |
| self.define_handlers() |
| while True: |
| try: |
| self.events.listen_for_events(self.handlers) |
| except KeyboardInterrupt: |
| self.shutdown() |
| break |
| except Exception, e: |
| self.log.info('Handler exception', e) |
| |
| def define_handlers(self): |
| self.handlers['start'] = handler_start |
| self.handlers['stop'] = handler_stop |
| |