blob: e3a2fe4db9d5243e9c61d3039a4bf3f374186b71 [file] [log] [blame]
#
# 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