manager fixed
Change-Id: I81d9a877ca824022c730f037d126e79cf7104bcf
This commit is contained in:
parent
ab0c9821f1
commit
31d50774e7
@ -70,29 +70,9 @@ manager_opts = [
|
||||
cfg.IntOpt("rate", default=60)
|
||||
]
|
||||
|
||||
"""
|
||||
keystone_opts = [
|
||||
cfg.StrOpt("admin_user", required=True),
|
||||
cfg.StrOpt("admin_password", required=True),
|
||||
cfg.StrOpt("admin_project_name", required=True),
|
||||
cfg.StrOpt("auth_url", required=True)
|
||||
]
|
||||
|
||||
mysql_opts = [
|
||||
cfg.StrOpt("host", required=True),
|
||||
cfg.StrOpt("user", default="synergy"),
|
||||
cfg.StrOpt("password", required=True),
|
||||
cfg.StrOpt("db", default="synergy", required=True),
|
||||
cfg.IntOpt("pool_size", default="10", required=False)
|
||||
]
|
||||
"""
|
||||
|
||||
cfg.CONF.register_opts(service_opts)
|
||||
cfg.CONF.register_opts(wsgi_opts, group="WSGI")
|
||||
cfg.CONF.register_opts(logger_opts, group="Logger")
|
||||
# cfg.CONF.register_opts(socket_opts)
|
||||
# cfg.CONF.register_opts(keystone_opts, group="Keystone")
|
||||
# cfg.CONF.register_opts(mysql_opts, group="MYSQL")
|
||||
|
||||
|
||||
def parse_args(args=None, usage=None, default_config_files=None):
|
||||
|
@ -1,8 +1,9 @@
|
||||
import copy
|
||||
import datetime
|
||||
import six
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
__author__ = "Lisa Zangrando"
|
||||
__email__ = "lisa.zangrando[AT]pd.infn.it"
|
||||
@ -45,10 +46,9 @@ class RequestContext(object):
|
||||
self.read_deleted = read_deleted
|
||||
self.remote_address = remote_address
|
||||
if not timestamp:
|
||||
timestamp = datetime.datetime.utcnow()
|
||||
timestamp = datetime.utcnow()
|
||||
if isinstance(timestamp, six.string_types):
|
||||
timestamp = datetime.datetime.strptime(timestamp,
|
||||
'%Y-%m-%dT%H:%M:%S.%f')
|
||||
timestamp = datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S.%f')
|
||||
self.timestamp = timestamp
|
||||
if not request_id:
|
||||
request_id = generate_request_id()
|
||||
@ -99,16 +99,14 @@ class RequestContext(object):
|
||||
pass
|
||||
|
||||
def toDict(self):
|
||||
date_format = "%Y-%m-%dT%H:%M:%S.%f"
|
||||
|
||||
return {'user_id': self.user_id,
|
||||
'project_id': self.project_id,
|
||||
'is_admin': self.is_admin,
|
||||
'read_deleted': self.read_deleted,
|
||||
'roles': self.roles,
|
||||
'remote_address': self.remote_address,
|
||||
'timestamp': datetime.datetime.strptime(self.timestamp,
|
||||
date_format),
|
||||
'timestamp': datetime.strptime(self.timestamp,
|
||||
'%Y-%m-%dT%H:%M:%S.%f'),
|
||||
'request_id': self.request_id,
|
||||
'auth_token': self.auth_token,
|
||||
'quota_class': self.quota_class,
|
||||
|
@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import logging.handlers
|
||||
import os
|
||||
|
||||
try:
|
||||
from oslo_config import cfg
|
||||
@ -53,6 +54,10 @@ def getLogger(name="unknown"):
|
||||
# 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,
|
||||
|
@ -1,6 +1,8 @@
|
||||
from threading import Condition
|
||||
from threading import Timer
|
||||
from threading import Event
|
||||
from threading import Thread
|
||||
|
||||
import time
|
||||
|
||||
__author__ = "Lisa Zangrando"
|
||||
__email__ = "lisa.zangrando[AT]pd.infn.it"
|
||||
@ -21,17 +23,18 @@ See the License for the specific language governing
|
||||
permissions and limitations under the License."""
|
||||
|
||||
|
||||
class Manager(object):
|
||||
class Manager(Thread):
|
||||
|
||||
def __init__(self, name):
|
||||
super(Manager, self).__init__()
|
||||
self.setDaemon(True)
|
||||
self.stop_event = Event()
|
||||
self.config_opts = []
|
||||
self.condition = Condition()
|
||||
self.name = name
|
||||
self.status = "CREATED"
|
||||
self.autostart = False
|
||||
self.rate = -1
|
||||
self.timer = None
|
||||
self.is_running = False
|
||||
self.managers = {}
|
||||
|
||||
def execute(self, command, *args, **kargs):
|
||||
@ -75,8 +78,7 @@ class Manager(object):
|
||||
return self.rate
|
||||
|
||||
def setRate(self, rate):
|
||||
if rate and rate > 0:
|
||||
self.rate = rate
|
||||
self.rate = rate
|
||||
|
||||
def setup(self):
|
||||
"""Manager initialization
|
||||
@ -102,46 +104,17 @@ class Manager(object):
|
||||
# if self.status == "RUNNING":
|
||||
# self.__task()
|
||||
|
||||
"""
|
||||
def __task(self):
|
||||
if self.rate:
|
||||
if self.status == "RUNNING":
|
||||
self.task()
|
||||
self.timer = Timer(self.rate, self.__task)
|
||||
self.timer.start()
|
||||
else:
|
||||
self.timer.cancel()
|
||||
"""
|
||||
|
||||
def start(self):
|
||||
if not self.rate:
|
||||
return
|
||||
|
||||
if not self.is_running and self.rate > 0:
|
||||
self.timer = Timer(self.rate * 60, self._run)
|
||||
self.timer.start()
|
||||
self.is_running = True
|
||||
|
||||
def _run(self):
|
||||
self.is_running = False
|
||||
self.start()
|
||||
|
||||
if self.status == "RUNNING":
|
||||
self.task()
|
||||
|
||||
def stop(self):
|
||||
self.timer.cancel()
|
||||
self.is_running = False
|
||||
if self.isAlive():
|
||||
# set event to signal thread to terminate
|
||||
self.stop_event.set()
|
||||
# block calling thread until thread really has terminated
|
||||
self.join()
|
||||
|
||||
def run(self):
|
||||
if not self.rate:
|
||||
return
|
||||
|
||||
with self.condition:
|
||||
while self.status != "DESTROYED" and self.status != "ERROR":
|
||||
if self.status == "RUNNING":
|
||||
self.task()
|
||||
|
||||
self.condition.wait(self.rate)
|
||||
else:
|
||||
self.condition.wait()
|
||||
while not self.stop_event.is_set():
|
||||
try:
|
||||
self.task()
|
||||
time.sleep(self.rate * 60)
|
||||
except Exception as ex:
|
||||
print("task %r: %s" % (self.name, ex))
|
||||
|
@ -4,7 +4,6 @@ except ImportError:
|
||||
import oslo.messaging as oslo_messaging
|
||||
|
||||
from synergy.common import context as ctx
|
||||
from synergy.common import log as logging
|
||||
from synergy.common import utils
|
||||
|
||||
|
||||
@ -27,9 +26,6 @@ See the License for the specific language governing
|
||||
permissions and limitations under the License."""
|
||||
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SynergyObject(object):
|
||||
"""Base class and object factory.
|
||||
|
||||
@ -101,10 +97,11 @@ class SynergyObject(object):
|
||||
self.attributes['synergy_object.namespace'] = 'synergy'
|
||||
|
||||
return self.attributes
|
||||
|
||||
"""
|
||||
def log(self):
|
||||
for key, value in self.attributes.items():
|
||||
LOG.info("%s = %s" % (key, value))
|
||||
"""
|
||||
|
||||
|
||||
class SynergySerializer(oslo_messaging.Serializer):
|
||||
|
@ -5,17 +5,17 @@ import sys
|
||||
from cgi import escape
|
||||
from cgi import parse_qs
|
||||
from pkg_resources import iter_entry_points
|
||||
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
|
||||
|
||||
try:
|
||||
from oslo_config import cfg
|
||||
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
|
||||
|
||||
__author__ = "Lisa Zangrando"
|
||||
__email__ = "lisa.zangrando[AT]pd.infn.it"
|
||||
@ -35,7 +35,6 @@ either express or implied.
|
||||
See the License for the specific language governing
|
||||
permissions and limitations under the License."""
|
||||
|
||||
|
||||
CONF = cfg.CONF
|
||||
LOG = None
|
||||
MANAGER_ENTRY_POINT = "synergy.managers" # used to discover Synergy managers
|
||||
@ -162,14 +161,14 @@ class Synergy(service.Service):
|
||||
|
||||
CONF.register_opts(config.manager_opts, group=entry.name)
|
||||
|
||||
manager_conf = CONF.get(entry.name)
|
||||
# manager_conf = CONF.get(entry.name)
|
||||
manager_class = entry.load()
|
||||
|
||||
manager_obj = manager_class(*args, **kwargs)
|
||||
LOG.info("manager instance %r created!", entry.name)
|
||||
|
||||
manager_obj.setAutoStart(manager_conf.autostart)
|
||||
manager_obj.setRate(manager_conf.rate)
|
||||
manager_obj.setAutoStart(CONF.get(entry.name).autostart)
|
||||
manager_obj.setRate(CONF.get(entry.name).rate)
|
||||
|
||||
self.managers[manager_obj.getName()] = manager_obj
|
||||
|
||||
@ -264,7 +263,9 @@ class Synergy(service.Service):
|
||||
if manager_name in self.managers:
|
||||
manager = self.managers[manager_name]
|
||||
try:
|
||||
manager.execute(cmd=command)
|
||||
cmd_result = manager.execute(command=command.getName(),
|
||||
**command.getParameters())
|
||||
command.addResult("result", cmd_result)
|
||||
result = synergySerializer.serialize_entity(context=None,
|
||||
entity=command)
|
||||
# LOG.info("command result %s" % result)
|
||||
@ -284,7 +285,6 @@ class Synergy(service.Service):
|
||||
manager_list = None
|
||||
result = {}
|
||||
|
||||
# synergySerializer = serializer.SynergySerializer()
|
||||
query = environ.get("QUERY_STRING", None)
|
||||
|
||||
if query:
|
||||
|
Loading…
x
Reference in New Issue
Block a user