Esempio n. 1
0
 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
Esempio n. 2
0
    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)
Esempio n. 3
0
    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
Esempio n. 4
0
    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>")
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)