From ce776f78c80bef1ddb9acad4b7bc0017eeb19c28 Mon Sep 17 00:00:00 2001 From: Yun Huang Date: Wed, 4 Jul 2018 17:53:25 +0800 Subject: pass backlogs via cache and verify for ocata Change-Id: I8067207656e52497d989c1cb43c10b7493949257 Issue-ID: MULTICLOUD-230 Signed-off-by: Yun Huang --- ocata/ocata/vesagent/tasks.py | 60 ++++++++++++++++++++++++++++++++--- ocata/ocata/vesagent/vesagent_ctrl.py | 15 +++++++++ 2 files changed, 71 insertions(+), 4 deletions(-) (limited to 'ocata') diff --git a/ocata/ocata/vesagent/tasks.py b/ocata/ocata/vesagent/tasks.py index 6d0486fb..2c94c8e6 100644 --- a/ocata/ocata/vesagent/tasks.py +++ b/ocata/ocata/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/ocata/ocata/vesagent/vesagent_ctrl.py b/ocata/ocata/vesagent/vesagent_ctrl.py index f99ac462..daacb4fa 100644 --- a/ocata/ocata/vesagent/vesagent_ctrl.py +++ b/ocata/ocata/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