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")
26 return cls.query.filter_by(round=fbsync.round)
31 def get_latest_by(cls, **kwargs):
32 fbsync = FindbadNodeRecordSync.get_by(hostname="global")
33 kwargs['round'] = fbsync.round
34 return cls.query.filter_by(**kwargs)
37 def get_latest_n_by(cls, n=3, **kwargs):
38 fbsync = FindbadNodeRecordSync.get_by(hostname="global")
39 kwargs['round'] = fbsync.round
42 kwargs['round'] = kwargs['round'] - i
43 f = cls.query.filter_by(**kwargs).first()
49 date_checked = Field(DateTime,default=datetime.now)
50 round = Field(Int,default=0)
51 hostname = Field(String,default=None)
52 loginbase = Field(String)
55 kernel_version = Field(String,default=None)
56 bootcd_version = Field(String,default=None)
57 nm_status = Field(String,default=None)
58 fs_status = Field(String,default=None)
59 dns_status = Field(String,default=None)
60 princeton_comon_dir = Field(Boolean,default=False)
61 princeton_comon_running = Field(Boolean,default=False)
62 princeton_comon_procs = Field(Int,default=None)
65 plc_node_stats = Field(PickleType,default=None)
66 plc_site_stats = Field(PickleType,default=None)
67 plc_pcuid = Field(Int,default=None)
68 comon_stats = Field(PickleType,default=None)
69 port_status = Field(PickleType,default=None)
70 ssh_portused = Field(Int,default=22)
71 ssh_status = Field(Boolean,default=False)
72 ssh_error = Field(String,default=None) # set if ssh_access == False
73 ping_status = Field(Boolean,default=False)
76 observed_category = Field(String,default=None)
77 observed_status = Field(String,default=None)
79 # NOTE: this is the child relation
80 action = ManyToOne('ActionRecord', required=False)
82 class FindbadPCURecord(Entity):
84 def get_all_latest(cls):
85 fbsync = FindbadPCURecordSync.get_by(plc_pcuid=0)
87 return cls.query.filter_by(round=fbsync.round)
92 def get_latest_by(cls, **kwargs):
93 fbsync = FindbadPCURecordSync.get_by(plc_pcuid=0)
94 kwargs['round'] = fbsync.round
95 return cls.query.filter_by(**kwargs)
97 date_checked = Field(DateTime)
98 round = Field(Int,default=0)
99 plc_pcuid = Field(Int) #alternateID=True,alternateMethodName='by_pcuid')
102 plc_pcu_stats = Field(PickleType,default=None)
103 dns_status = Field(String)
104 port_status = Field(PickleType)
105 entry_complete = Field(String)
109 reboot_trial_status = Field(String)