def checkActive(self, lista): active = [] mcount = mcache.cacher(self.mname) for machine in lista: r = mcount.retrievedict(machine) if r != -1: active.append(machine) return active
def add(self, name, hostid): res = self.Exist(name, hostid) if res is None: workstation = Workstations(host=name, reg=hostid, active=1) workstation.put() mcount = mcache.cacher(self.mname) mcount.updatelist(name)
def retrieve(self): mcount = mcache.cacher(self.mname) c = mcount.retrieve( ) #check the cache before fetch results from the database if c is None: #if the cache does not hold the info, fetch from db query = Workstations.all() total = query.count() results = query.fetch(total) if results is not None: mcount.updatecache(results) #update cache return results else: results = [] return results else: return c #return cache results otherwise
def get(self): self.response.out.write('<html><body>') machines = wsDB.manager() mws = mcache.cacher("machines") total_machines = machines.retrieveActive() if len(total_machines) == 0: self.response.out.write( "<p>No machines are online at the moment</p>") else: for machine in total_machines: load = mws.retrievedict(machine) if load != -1: tmp = str(load) + r'%' self.response.out.write("<p>%s load is %s</p>" % (machine, tmp)) else: self.response.out.write( "<p>%s is offline at the moment</p>" % (machine)) self.response.out.write("</body></html>")
def regtick(self, request): machines = wsDB.manager() ticks = mcache.cacher("ticks") self.request = request #if request.when: # when = datetime.datetime.utcfromtimestamp(request.when) #else: when = datetime.datetime.now() try: host = request.hostname regKey = request.hostid carga = request.load total = request.totalram avaram = request.freeram kern = request.kernel nproc = request.cores except: return TickSuccess(resp=invdata) machines.add(host, regKey) #atualiza a lista de hosts ticks.updatedict( host, carga, 600 ) #atualiza o dado referente ao computador. Se tiver expirado, insere um novo registro ticket = wsDB.HeartBeats(hostname=host, hostid=regKey, totalram=total, load=carga, freeram=avaram, kernel=kern, cores=nproc, active=1, date=when) try: ticket.put() #efetiva a escrita ao banco except: return TickSuccess(resp="DB unreachable") ans = "Data Validated" return TickSuccess(resp=ans)
def retrieveActive(self): mcount = mcache.cacher(self.mname) c = mcount.retrieve() lista = [] if c is None: #cache failure protection. This check up is not well implemented yet query = Workstations.all() query.filter("active =", 1) total = query.count() results = query.fetch(total) if results is not None: for item in results: lista.append(item.host) actives = lista actives = self.checkActive(results) mcount.add(actives) #update cache return actives else: results = [] return results else: return self.checkActive(c)