Files
mayan-edms/apps/clustering/models.py
Roberto Rosario 75f9c47e2b Add clustering app
2012-07-30 12:54:27 -04:00

45 lines
1.4 KiB
Python

from __future__ import absolute_import
import os
import datetime
import platform
import psutil
from django.db import models, IntegrityError, transaction
from django.db import close_connection
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
class NodeManager(models.Manager):
def myself(self):
node, created = self.model.objects.get_or_create(hostname=platform.node(), defaults={'memory_usage': 100})
node.refresh()
return node
class Node(models.Model):
hostname = models.CharField(max_length=255, verbose_name=_(u'hostname'))
cpuload = models.PositiveIntegerField(blank=True, default=0, verbose_name=_(u'cpu load'))
heartbeat = models.DateTimeField(blank=True, default=datetime.datetime.now(), verbose_name=_(u'last heartbeat check'))
memory_usage = models.FloatField(blank=True, verbose_name=_(u'memory usage'))
objects = NodeManager()
def __unicode__(self):
return self.hostname
def refresh(self):
self.cpuload = psutil.cpu_percent()
self.memory_usage = psutil.phymem_usage().percent
self.save()
def save(self, *args, **kwargs):
self.heartbeat = datetime.datetime.now()
return super(Node, self).save(*args, **kwargs)
class Meta:
verbose_name = _(u'node')
verbose_name_plural = _(u'nodes')