From 6bda6e9b753e9d900aca898c438bc8b1e7d006e0 Mon Sep 17 00:00:00 2001 From: Bin Yang Date: Tue, 15 May 2018 07:46:27 +0000 Subject: Add the vesagent worker scheduler as celery task The vesagent configurion logic will trigger the vesagent worker scheduler via celery Change-Id: I2504f2ef2672c25416062f63ffdfc5495b9200b4 Issue-ID: MULTICLOUD-230 Signed-off-by: Bin Yang --- windriver/titanium_cloud/vesagent/tasks.py | 56 ++++++++++++++++++++++ windriver/titanium_cloud/vesagent/vesagent_ctrl.py | 3 ++ 2 files changed, 59 insertions(+) create mode 100644 windriver/titanium_cloud/vesagent/tasks.py diff --git a/windriver/titanium_cloud/vesagent/tasks.py b/windriver/titanium_cloud/vesagent/tasks.py new file mode 100644 index 00000000..09591b45 --- /dev/null +++ b/windriver/titanium_cloud/vesagent/tasks.py @@ -0,0 +1,56 @@ +# Copyright (c) 2017-2018 Wind River Systems, Inc. +# +# 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. + +### VES agent workers +from __future__ import absolute_import, unicode_literals +from titanium_cloud.celery import app +import os +import logging +import json +import time + +from django.core.cache import cache + +logger = logging.getLogger(__name__) + + +@app.task(bind=True) +def scheduleBacklogs(self, vimid): + # make sure only one task runs here + logger.info("schedule with vimid:%" % (vimid)) + + logger.debug("scheduleBacklogs starts") + backlog_count, next_time_slot = processBacklogs() + logger.debug("processBacklogs return with %s, %s" % (backlog_count, next_time_slot)) + + # sleep for next_time_slot + while backlog_count > 0: + time.sleep(next_time_slot) + backlog_count, next_time_slot = processBacklogs() + + logger.debug("scheduleBacklogs stops") + + +def processBacklogs(): + # find out count of valid backlog and the next time slot + backlog_count = 2 #debug the timer sleep + next_time_slot = 10 + + logger.debug("process backlogs starts") + + #TBD + + logger.debug("return with %s" %(backlog_count, next_time_slot)) + return backlog_count, next_time_slot + diff --git a/windriver/titanium_cloud/vesagent/vesagent_ctrl.py b/windriver/titanium_cloud/vesagent/vesagent_ctrl.py index 987a0966..0cc2e9f5 100644 --- a/windriver/titanium_cloud/vesagent/vesagent_ctrl.py +++ b/windriver/titanium_cloud/vesagent/vesagent_ctrl.py @@ -22,6 +22,7 @@ from rest_framework.views import APIView from django.conf import settings from common.msapi import extsys +from titanium_cloud.vesagent.tasks import scheduleBacklogs from titanium_cloud.vesagent.event_domain.fault_vm import buildBacklog_fault_vm from django.core.cache import cache @@ -257,6 +258,8 @@ class VesAgentCtrl(APIView): # cache forever cache.set("VesAgentBacklogs.config.%s" % vimid, VesAgentBacklogsConfigStr, None) + # notify schduler + scheduleBacklogs.delay(vimid) except Exception as e: self._logger.error("exception:%s" % str(e)) VesAgentBacklogsConfig = {"error":"exception occurs during build backlogs"} -- cgit 1.2.3-korg