diff options
author | Yun Huang <yun.huang@windriver.com> | 2018-07-04 17:49:42 +0800 |
---|---|---|
committer | Yun Huang <yun.huang@windriver.com> | 2018-07-04 17:49:42 +0800 |
commit | 09a45a5c8fa4906bee65cc2268a4d17e6defe44f (patch) | |
tree | 49e300568a21d2cc91d4615776de39cf5f3c8e6e /ocata | |
parent | 6455cf7852129b9dfcc0a7679df254a4e44533c6 (diff) |
Add the vesagent worker scheduler as celery task
The vesagent configurion logic will trigger the
vesagent worker scheduler via celery
Change-Id: I14aba0c411bdfaae1a9a993e16fbdb8fde485bce
Issue-ID: MULTICLOUD-230
Signed-off-by: Yun Huang <yun.huang@windriver.com>
Diffstat (limited to 'ocata')
-rw-r--r-- | ocata/ocata/vesagent/tasks.py | 56 | ||||
-rw-r--r-- | ocata/ocata/vesagent/vesagent_ctrl.py | 3 |
2 files changed, 59 insertions, 0 deletions
diff --git a/ocata/ocata/vesagent/tasks.py b/ocata/ocata/vesagent/tasks.py new file mode 100644 index 00000000..6d0486fb --- /dev/null +++ b/ocata/ocata/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 ocata.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/ocata/ocata/vesagent/vesagent_ctrl.py b/ocata/ocata/vesagent/vesagent_ctrl.py index 421959e8..f99ac462 100644 --- a/ocata/ocata/vesagent/vesagent_ctrl.py +++ b/ocata/ocata/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 ocata.vesagent.tasks import scheduleBacklogs from ocata.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"} |