From caa098049b68993b6cf7965ff14114f47c7aaad5 Mon Sep 17 00:00:00 2001 From: Bin Yang Date: Tue, 15 May 2018 08:37:29 +0000 Subject: pass backlogs via cache and verify that Change-Id: I5ea05e29290a23c290d3e1deb7ef637b06e7c6b7 Issue-ID: MULTICLOUD-230 Signed-off-by: Bin Yang --- windriver/titanium_cloud/vesagent/tasks.py | 60 ++++++++++++++++++++-- windriver/titanium_cloud/vesagent/vesagent_ctrl.py | 15 ++++++ 2 files changed, 71 insertions(+), 4 deletions(-) (limited to 'windriver') 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: -- cgit 1.2.3-korg