c871c788c6ca730d67e495ebb53ac94721cca8d9
[monitor.git] / monitor / database / info / history.py
1 from elixir import Entity, Field, OneToMany, ManyToOne, ManyToMany
2 from elixir import options_defaults, using_options, setup_all
3 from elixir import String, Integer as Int, DateTime, Boolean
4 from datetime import datetime,timedelta
5
6 from monitor.database.dborm import mon_metadata, mon_session
7 __metadata__ = mon_metadata
8 __session__  = mon_session
9
10 # your data model
11 class HistoryNodeRecord(Entity):
12         hostname = Field(String(250),primary_key=True)
13         last_checked = Field(DateTime,default=datetime.now)
14         last_changed = Field(DateTime,default=datetime.now)
15         status = Field(String,default="unknown")
16
17         @classmethod
18         def by_hostname(cls, hostname):
19                 return cls.query.filter_by(hostname=hostname).first()
20
21 class HistoryPCURecord(Entity):
22         plc_pcuid = Field(Int,primary_key=True)
23
24         last_checked = Field(DateTime,default=datetime.now)
25         last_changed = Field(DateTime,default=datetime.now)
26         status = Field(String,default="unknown")
27
28         last_valid = Field(DateTime,default=None)
29         valid  = Field(String,default="unknown")
30
31         @classmethod
32         def by_pcuid(cls, pcuid):
33                 return cls.query.filter_by(pcuid=pcuid).first()
34
35 class HistorySiteRecord(Entity):
36         loginbase = Field(String(250),primary_key=True)
37
38         last_checked = Field(DateTime,default=datetime.now)
39         last_changed = Field(DateTime,default=datetime.now)
40
41         nodes_total = Field(Int,default=0)
42         nodes_up = Field(Int,default=0)
43         slices_used = Field(Int,default=0)
44
45         status = Field(String,default="unknown")
46
47         @classmethod
48         def by_loginbase(cls, loginbase):
49                 return cls.query.filter_by(loginbase=loginbase).first()
50