summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYun Huang <yun.huang@windriver.com>2018-07-04 17:49:42 +0800
committerYun Huang <yun.huang@windriver.com>2018-07-04 17:49:42 +0800
commit09a45a5c8fa4906bee65cc2268a4d17e6defe44f (patch)
tree49e300568a21d2cc91d4615776de39cf5f3c8e6e
parent6455cf7852129b9dfcc0a7679df254a4e44533c6 (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>
-rw-r--r--ocata/ocata/vesagent/tasks.py56
-rw-r--r--ocata/ocata/vesagent/vesagent_ctrl.py3
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"}