summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBin Yang <bin.yang@windriver.com>2018-05-15 07:46:27 +0000
committerBin Yang <bin.yang@windriver.com>2018-05-15 07:46:27 +0000
commit6bda6e9b753e9d900aca898c438bc8b1e7d006e0 (patch)
treee1253d6dee18e5eb36387b98b2ff894535caaac5
parentef5889eb7bfcc007f97d41618d96612d6bc271e2 (diff)
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 <bin.yang@windriver.com>
-rw-r--r--windriver/titanium_cloud/vesagent/tasks.py56
-rw-r--r--windriver/titanium_cloud/vesagent/vesagent_ctrl.py3
2 files changed, 59 insertions, 0 deletions
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"}