1 from elixir import Entity, Field, OneToMany, ManyToOne, ManyToMany
2 from elixir import options_defaults, using_options, setup_all, belongs_to
3 from elixir import String, Integer as Int, DateTime, PickleType, Boolean
4 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 FindbadNodeRecordSync(Entity):
14 hostname = Field(String(250),primary_key=True) #,alternateMethodName='by_hostname')
15 round = Field(Int,default=0)
17 class FindbadPCURecordSync(Entity):
18 plc_pcuid = Field(Int,primary_key=True) #,alternateMethodName='by_pcuid')
19 round = Field(Int,default=0)
21 class FindbadNodeRecord(Entity):
23 def get_all_latest(cls):
24 fbsync = FindbadNodeRecordSync.get_by(hostname="global")
25 return cls.query.filter_by(round=fbsync.round)
28 def get_latest_by(cls, **kwargs):
29 fbsync = FindbadNodeRecordSync.get_by(hostname="global")
30 kwargs['round'] = fbsync.round
31 return cls.query.filter_by(**kwargs)
34 def get_latest_n_by(cls, n=3, **kwargs):
35 fbsync = FindbadNodeRecordSync.get_by(hostname="global")
36 kwargs['round'] = fbsync.round
39 kwargs['round'] = kwargs['round'] - i
40 f = cls.query.filter_by(**kwargs).first()
46 date_checked = Field(DateTime,default=datetime.now)
47 round = Field(Int,default=0)
48 hostname = Field(String,default=None)
49 loginbase = Field(String)
52 kernel_version = Field(String,default=None)
53 bootcd_version = Field(String,default=None)
54 nm_status = Field(String,default=None)
55 fs_status = Field(String,default=None)
56 dns_status = Field(String,default=None)
57 princeton_comon_dir = Field(Boolean,default=False)
58 princeton_comon_running = Field(Boolean,default=False)
59 princeton_comon_procs = Field(Int,default=None)
62 plc_node_stats = Field(PickleType,default=None)
63 plc_site_stats = Field(PickleType,default=None)
64 plc_pcuid = Field(Int,default=None)
65 comon_stats = Field(PickleType,default=None)
66 port_status = Field(PickleType,default=None)
67 ssh_portused = Field(Int,default=22)
68 ssh_status = Field(Boolean,default=False)
69 ssh_error = Field(String,default=None) # set if ssh_access == False
70 ping_status = Field(Boolean,default=False)
73 observed_category = Field(String,default=None)
74 observed_status = Field(String,default=None)
76 # NOTE: this is the child relation
77 action = ManyToOne('ActionRecord', required=False)
79 class FindbadPCURecord(Entity):
81 def get_all_latest(cls):
82 fbsync = cls.get_by(hostname="global")
83 return cls.query.filter_by(round=fbsync.round)
86 def get_latest_by(cls, **kwargs):
87 fbsync = cls.get_by(hostname="global")
88 kwargs['round'] = fbsync.round
89 return cls.query.filter_by(**kwargs)
91 date_checked = Field(DateTime)
92 round = Field(Int,default=0)
93 plc_pcuid = Field(Int) #alternateID=True,alternateMethodName='by_pcuid')
96 plc_pcu_stats = Field(PickleType,default=None)
97 dns_status = Field(String)
98 port_status = Field(PickleType)
99 entry_complete = Field(String)
103 reboot_trial_status = Field(String)