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 elixir.ext.versioned import *
6 from datetime import datetime,timedelta
8 from monitor.database.dborm import mon_metadata, mon_session
9 __metadata__ = mon_metadata
10 __session__ = mon_session
13 class HistoryNodeRecord(Entity):
14 hostname = Field(String(250),primary_key=True)
15 last_checked = Field(DateTime,default=datetime.now)
16 last_changed = Field(DateTime,default=datetime.now)
17 status = Field(String,default="unknown")
18 haspcu = Field(Boolean,default=False)
19 firewall = Field(Boolean,default=False)
20 plc_nodeid = Field(Int,default=1)
21 plc_siteid = Field(Int,default=1)
23 acts_as_versioned(ignore=['last_changed', 'last_checked'])
26 def by_hostname(cls, hostname):
27 return cls.query.filter_by(hostname=hostname).first()
29 class HistoryPCURecord(Entity):
30 plc_pcuid = Field(Int,primary_key=True)
32 last_checked = Field(DateTime,default=datetime.now)
33 last_changed = Field(DateTime,default=datetime.now)
34 status = Field(String,default="unknown")
36 last_valid = Field(DateTime,default=None)
37 valid = Field(String,default="unknown")
39 acts_as_versioned(ignore=['last_changed', 'last_checked'])
42 def by_pcuid(cls, pcuid):
43 return cls.query.filter_by(pcuid=pcuid).first()
46 class HistorySiteRecord(Entity):
47 loginbase = Field(String(250),primary_key=True)
48 plc_siteid = Field(Int,default=1)
50 last_checked = Field(DateTime,default=datetime.now)
51 last_changed = Field(DateTime,default=datetime.now)
53 nodes_total = Field(Int,default=0)
54 nodes_up = Field(Int,default=0)
55 slices_total = Field(Int,default=0)
56 slices_used = Field(Int,default=0)
58 # all nodes offline and never-contact.
59 new = Field(Boolean,default=False)
61 enabled = Field(Boolean,default=False)
63 status = Field(String,default="unknown")
65 message_id = Field(Int, default=0)
66 message_status = Field(String, default=None)
67 message_queue = Field(String, default=None)
68 message_created = Field(DateTime, default=None)
69 #message_last_reply = Field(DateTime, default=None)
71 penalty_level = Field(Int, default=0)
72 penalty_applied = Field(Boolean, default=False)
73 penalty_pause = Field(Boolean, default=False)
74 penalty_pause_time = Field(DateTime, default=None)
76 acts_as_versioned(ignore=['last_changed', 'last_checked', 'message_status', 'penalty_pause_time'])
79 def by_loginbase(cls, loginbase):
80 return cls.query.filter_by(loginbase=loginbase).first()