moving infovacuum to info for brevity.
[monitor.git] / monitor / database / info / history.py
diff --git a/monitor/database/info/history.py b/monitor/database/info/history.py
new file mode 100644 (file)
index 0000000..c871c78
--- /dev/null
@@ -0,0 +1,50 @@
+from elixir import Entity, Field, OneToMany, ManyToOne, ManyToMany
+from elixir import options_defaults, using_options, setup_all
+from elixir import String, Integer as Int, DateTime, Boolean
+from datetime import datetime,timedelta
+
+from monitor.database.dborm import mon_metadata, mon_session
+__metadata__ = mon_metadata
+__session__  = mon_session
+
+# your data model
+class HistoryNodeRecord(Entity):
+       hostname = Field(String(250),primary_key=True)
+       last_checked = Field(DateTime,default=datetime.now)
+       last_changed = Field(DateTime,default=datetime.now)
+       status = Field(String,default="unknown")
+
+       @classmethod
+       def by_hostname(cls, hostname):
+               return cls.query.filter_by(hostname=hostname).first()
+
+class HistoryPCURecord(Entity):
+       plc_pcuid = Field(Int,primary_key=True)
+
+       last_checked = Field(DateTime,default=datetime.now)
+       last_changed = Field(DateTime,default=datetime.now)
+       status = Field(String,default="unknown")
+
+       last_valid = Field(DateTime,default=None)
+       valid  = Field(String,default="unknown")
+
+       @classmethod
+       def by_pcuid(cls, pcuid):
+               return cls.query.filter_by(pcuid=pcuid).first()
+
+class HistorySiteRecord(Entity):
+       loginbase = Field(String(250),primary_key=True)
+
+       last_checked = Field(DateTime,default=datetime.now)
+       last_changed = Field(DateTime,default=datetime.now)
+
+       nodes_total = Field(Int,default=0)
+       nodes_up = Field(Int,default=0)
+       slices_used = Field(Int,default=0)
+
+       status = Field(String,default="unknown")
+
+       @classmethod
+       def by_loginbase(cls, loginbase):
+               return cls.query.filter_by(loginbase=loginbase).first()
+