diff --git a/setup.cfg b/setup.cfg index f57cd01..b920e6f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,10 +28,10 @@ synergy.managers = timer = synergy.examples.timer_manager:TimerManager synergy.commands = - list = synergy.client.command:LIST - status = synergy.client.command:STATUS - start = synergy.client.command:START - stop = synergy.client.command:STOP + list = synergy.client.command:List + status = synergy.client.command:Status + start = synergy.client.command:Start + stop = synergy.client.command:Stop [build_sphinx] source-dir = doc/source diff --git a/synergy/client/command.py b/synergy/client/command.py index 5ed4370..f295caf 100644 --- a/synergy/client/command.py +++ b/synergy/client/command.py @@ -18,42 +18,6 @@ either express or implied. See the License for the specific language governing permissions and limitations under the License.""" -""" -class BaseCommand(object): - - def __init__(self, name): - self.name = name - self.parameters = {} - self.results = {} - - def getName(self): - return self.name - - def getParameters(self): - return self.parameters - - def addParameter(self, name, value): - self.parameters[name] = value - - def getParameter(self, name): - return self.parameters.get(name, None) - - def getResults(self): - return self.results - - def addResult(self, name, value): - self.results[name] = value - - def getResult(self, name): - return self.getResults().get(name, None) - - def setResults(self, data): - self.results = data - - -class HTTPCommand(BaseCommand): -""" - class HTTPCommand(object): @@ -63,9 +27,6 @@ class HTTPCommand(object): def getName(self): return self.name - # def __init__(self, name): - # super(HTTPCommand, self).__init__(name) - def configureParser(self, subparser): raise NotImplementedError("not implemented!") @@ -81,23 +42,23 @@ class HTTPCommand(object): request.raise_for_status() self.results = request.json() - # self.setResults(request.json()) + return request def getResults(self): return self.results -class LIST(HTTPCommand): +class List(HTTPCommand): def __init__(self): - super(LIST, self).__init__("list") + super(List, self).__init__("list") def configureParser(self, subparser): subparser.add_parser("list", add_help=True, help="list the managers") def sendRequest(self, synergy_url, args=None): - super(LIST, self).sendRequest(synergy_url + "/synergy/list") + super(List, self).sendRequest(synergy_url + "/synergy/list") def log(self): results = self.getResults() @@ -117,10 +78,10 @@ class LIST(HTTPCommand): print(msg) -class START(HTTPCommand): +class Start(HTTPCommand): def __init__(self): - super(START, self).__init__("start") + super(Start, self).__init__("start") def configureParser(self, subparser): parser = subparser.add_parser("start", @@ -130,7 +91,7 @@ class START(HTTPCommand): parser.add_argument("manager", help="the manager to be started") def sendRequest(self, synergy_url, args): - super(START, self).sendRequest(synergy_url + "/synergy/start", + super(Start, self).sendRequest(synergy_url + "/synergy/start", {"manager": args.manager}) def log(self): @@ -164,10 +125,10 @@ class START(HTTPCommand): print(msg) -class STOP(HTTPCommand): +class Stop(HTTPCommand): def __init__(self): - super(STOP, self).__init__("stop") + super(Stop, self).__init__("stop") def configureParser(self, subparser): parser = subparser.add_parser("stop", @@ -177,7 +138,7 @@ class STOP(HTTPCommand): parser.add_argument("manager", help="the manager to be stopped") def sendRequest(self, synergy_url, args): - super(STOP, self).sendRequest(synergy_url + "/synergy/stop", + super(Stop, self).sendRequest(synergy_url + "/synergy/stop", {"manager": args.manager}) def log(self): @@ -209,10 +170,10 @@ class STOP(HTTPCommand): print(msg) -class STATUS(HTTPCommand): +class Status(HTTPCommand): def __init__(self): - super(STATUS, self).__init__("status") + super(Status, self).__init__("status") def configureParser(self, subparser): parser = subparser.add_parser("status", @@ -222,7 +183,7 @@ class STATUS(HTTPCommand): parser.add_argument("manager", nargs='*', help="the managers list") def sendRequest(self, synergy_url, args): - super(STATUS, self).sendRequest(synergy_url + "/synergy/status", + super(Status, self).sendRequest(synergy_url + "/synergy/status", {"manager": args.manager}) def log(self): @@ -244,15 +205,15 @@ class STATUS(HTTPCommand): print(msg) -class EXECUTE(HTTPCommand): +class Execute(HTTPCommand): def __init__(self, name): - super(EXECUTE, self).__init__(name) + super(Execute, self).__init__(name) def sendRequest(self, synergy_url, manager, command, args=None): payload = {"manager": manager, "command": command, "args": args} - super(EXECUTE, self).sendRequest(synergy_url + "/synergy/execute", + super(Execute, self).sendRequest(synergy_url + "/synergy/execute", payload) diff --git a/synergy/common/config.py b/synergy/common/config.py index 4ae4e69..2827b27 100644 --- a/synergy/common/config.py +++ b/synergy/common/config.py @@ -1,3 +1,7 @@ +import logging +import logging.handlers +import os + try: from oslo_config import cfg except ImportError: @@ -55,7 +59,7 @@ wsgi_opts = [ ] logger_opts = [ - cfg.StrOpt("filename", default="/var/log/synergy/synergy.log", + cfg.StrOpt("filename", default="/tmp/synergy.log", required=True), cfg.StrOpt("level", default="INFO", required=False), cfg.IntOpt("maxBytes", default=1048576), @@ -81,3 +85,36 @@ def parse_args(args=None, usage=None, default_config_files=None): version="1.0", usage=usage, default_config_files=default_config_files) + + # create a logging format + formatter = logging.Formatter(CONF.Logger.formatter) + + log_dir = os.path.dirname(CONF.Logger.filename) + if not os.path.exists(log_dir): + os.makedirs(log_dir) + + # Add the log message handler to the logger + handler = logging.handlers.RotatingFileHandler( + CONF.Logger.filename, + maxBytes=CONF.Logger.maxBytes, + backupCount=CONF.Logger.backupCount) + + handler.setFormatter(formatter) + + # set root logger + root_logger = logging.getLogger("synergy") + + if cfg.CONF.Logger.level == "DEBUG": + root_logger.setLevel(logging.DEBUG) + elif cfg.CONF.Logger.level == "INFO": + root_logger.setLevel(logging.INFO) + elif cfg.CONF.Logger.level == "WARNING": + root_logger.setLevel(logging.WARNING) + elif cfg.CONF.Logger.level == "ERROR": + root_logger.setLevel(logging.ERROR) + elif cfg.CONF.Logger.level == "CRITICAL": + root_logger.setLevel(logging.CRITICAL) + else: + root_logger.setLevel(logging.INFO) + + root_logger.addHandler(handler) diff --git a/synergy/common/log.py b/synergy/common/log.py deleted file mode 100644 index d063950..0000000 --- a/synergy/common/log.py +++ /dev/null @@ -1,73 +0,0 @@ -import logging -import logging.handlers -import os - -try: - from oslo_config import cfg -except ImportError: - from oslo.config import cfg - -__author__ = "Lisa Zangrando" -__email__ = "lisa.zangrando[AT]pd.infn.it" -__copyright__ = """Copyright (c) 2015 INFN - INDIGO-DataCloud -All Rights Reserved - -Licensed under the Apache License, Version 2.0; -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.""" - -CONF = cfg.CONF -loggers = {} - - -def getLogger(name="unknown"): - global loggers - - if loggers.get(name): - return loggers.get(name) - - else: - logger = logging.getLogger(name) - - if CONF.Logger.level == "DEBUG": - logger.setLevel(logging.DEBUG) - elif CONF.Logger.level == "INFO": - logger.setLevel(logging.INFO) - elif CONF.Logger.level == "WARNING": - logger.setLevel(logging.WARNING) - elif CONF.Logger.level == "ERROR": - logger.setLevel(logging.ERROR) - elif CONF.Logger.level == "CRITICAL": - logger.setLevel(logging.CRITICAL) - else: - logger.setLevel(logging.INFO) - - # create a logging format - formatter = logging.Formatter(CONF.Logger.formatter) - - log_dir = os.path.dirname(CONF.Logger.filename) - if not os.path.exists(log_dir): - os.makedirs(log_dir) - - # Add the log message handler to the logger - handler = logging.handlers.RotatingFileHandler( - CONF.Logger.filename, - maxBytes=CONF.Logger.maxBytes, - backupCount=CONF.Logger.backupCount) - - handler.setFormatter(formatter) - - logger.addHandler(handler) - - loggers[name] = logger - - return logger diff --git a/synergy/common/service.py b/synergy/common/service.py index 5ee03b9..a014f7c 100644 --- a/synergy/common/service.py +++ b/synergy/common/service.py @@ -1,3 +1,4 @@ +import logging import os import signal import sys @@ -7,8 +8,6 @@ try: except ImportError: from oslo.config import cfg -from synergy.common import log as logging - __author__ = "Lisa Zangrando" __email__ = "lisa.zangrando[AT]pd.infn.it" diff --git a/synergy/common/wsgi.py b/synergy/common/wsgi.py index 6ad2dee..bd4e4ea 100644 --- a/synergy/common/wsgi.py +++ b/synergy/common/wsgi.py @@ -1,5 +1,6 @@ import errno import eventlet +import logging import os import re import socket @@ -9,7 +10,6 @@ import time from eventlet import greenio as eventlet_greenio from eventlet import wsgi as eventlet_wsgi -from synergy.common import log as logging from sys import exc_info from traceback import format_tb diff --git a/synergy/examples/timer_manager.py b/synergy/examples/timer_manager.py index f6f28d4..a646771 100644 --- a/synergy/examples/timer_manager.py +++ b/synergy/examples/timer_manager.py @@ -1,6 +1,6 @@ +import logging import time -from synergy.common import log as logging from synergy.common.manager import Manager __author__ = "Lisa Zangrando" diff --git a/synergy/service.py b/synergy/service.py index 645883f..d0d88c6 100644 --- a/synergy/service.py +++ b/synergy/service.py @@ -1,5 +1,6 @@ import eventlet import json +import logging import sys from cgi import escape @@ -12,7 +13,6 @@ except ImportError: from oslo.config import cfg from synergy.common import config -from synergy.common import log as logging from synergy.common import serializer from synergy.common import service from synergy.common import wsgi