summaryrefslogtreecommitdiffstats
path: root/windriver/titanium_cloud
diff options
context:
space:
mode:
Diffstat (limited to 'windriver/titanium_cloud')
-rw-r--r--windriver/titanium_cloud/vesagent/tasks.py60
-rw-r--r--windriver/titanium_cloud/vesagent/vesagent_ctrl.py15
2 files changed, 71 insertions, 4 deletions
diff --git a/windriver/titanium_cloud/vesagent/tasks.py b/windriver/titanium_cloud/vesagent/tasks.py
index 09591b45..e46ed8a7 100644
--- a/windriver/titanium_cloud/vesagent/tasks.py
+++ b/windriver/titanium_cloud/vesagent/tasks.py
@@ -44,13 +44,65 @@ def scheduleBacklogs(self, vimid):
def processBacklogs():
# find out count of valid backlog and the next time slot
- backlog_count = 2 #debug the timer sleep
+ backlog_count = 0
next_time_slot = 10
+ try:
+ #get the whole list of backlog
+ VesAgentBacklogsVimListStr = cache.get("VesAgentBacklogs.vimlist")
+ if VesAgentBacklogsVimListStr is None:
+ logger.warn("VesAgentBacklogs.vimlist cannot be found in cache")
+ return 0,next_time_slot
- logger.debug("process backlogs starts")
+ logger.debug("VesAgentBacklogs.vimlist: %s" % (VesAgentBacklogsVimListStr))
- #TBD
+ backlogsAllVims = json.loads(VesAgentBacklogsVimListStr)
+ if backlogsAllVims is None:
+ logger.warn("VesAgentBacklogs.vimlist is empty")
+ return 0,next_time_slot
+
+ for vimid in backlogsAllVims:
+ #iterate each backlogs
+ backlog_count_tmp,next_time_slot_tmp = processBacklogsOfOneVIM(vimid)
+ logger.debug("vimid:%s, backlog_count,next_time_slot:%s,%s"
+ %( vimid,backlog_count_tmp,next_time_slot_tmp ))
+ backlog_count += backlog_count_tmp
+ next_time_slot = next_time_slot_tmp if next_time_slot > next_time_slot_tmp else next_time_slot
+ pass
+
+ except Exception as e:
+ logger.error("exception:%s" % str(e))
+
+ return backlog_count, next_time_slot
+
+ pass
+
+
+def processBacklogsOfOneVIM(vimid):
+ '''
+ process all backlogs for a VIM, return count of valid backlogs
+ :param vimid:
+ :return:
+ '''
+ backlog_count = 3
+ next_time_slot = 10
+
+ try:
+ vesAgentConfigStr = cache.get("VesAgentBacklogs.config.%s" % (vimid))
+ if vesAgentConfigStr is None:
+ logger.warn("VesAgentBacklogs.config.%s cannot be found in cache" % (vimid))
+ return 0,next_time_slot
+
+ logger.debug("VesAgentBacklogs.config.%s: %s" % (vimid, vesAgentConfigStr))
+
+ vesAgentConfig = json.loads(vesAgentConfigStr)
+ if vesAgentConfig is None:
+ logger.warn("VesAgentBacklogs.config.%s corrupts" % (vimid))
+ return 0,next_time_slot
+
+
+
+ except Exception as e:
+ logger.error("exception:%s" % str(e))
- 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 0cc2e9f5..a531a61a 100644
--- a/windriver/titanium_cloud/vesagent/vesagent_ctrl.py
+++ b/windriver/titanium_cloud/vesagent/vesagent_ctrl.py
@@ -258,6 +258,21 @@ class VesAgentCtrl(APIView):
# cache forever
cache.set("VesAgentBacklogs.config.%s" % vimid, VesAgentBacklogsConfigStr, None)
+ # update list of vimid for vesagent
+ # get the whole list of backlog
+ VesAgentBacklogsVimListStr = cache.get("VesAgentBacklogs.vimlist")
+ VesAgentBacklogsVimList = [vimid]
+ if VesAgentBacklogsVimListStr is not None:
+ VesAgentBacklogsVimList = json.loads(VesAgentBacklogsVimListStr)
+ VesAgentBacklogsVimList = [v for v in VesAgentBacklogsVimList if v != vimid]
+ VesAgentBacklogsVimList = self.vimid_
+ VesAgentBacklogsVimList.append(vimid)
+
+ logger.info("VesAgentBacklogs.vimlist is %s" % VesAgentBacklogsVimList)
+
+ #cache forever
+ cache.set("VesAgentBacklogs.vimlist", json.dumps(VesAgentBacklogsVimList), None)
+
# notify schduler
scheduleBacklogs.delay(vimid)
except Exception as e: