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
7 from elixir.ext.versioned import *
9 from monitor.database.dborm import mon_metadata, mon_session
10 __metadata__ = mon_metadata
11 __session__ = mon_session
14 #class FindbadNodeRecordSync(Entity):
15 # hostname = Field(String(250),primary_key=True) #,alternateMethodName='by_hostname')
16 # round = Field(Int,default=0)
18 #class FindbadPCURecordSync(Entity):
19 # plc_pcuid = Field(Int,primary_key=True) #,alternateMethodName='by_pcuid')
20 # round = Field(Int,default=0)
22 class FindbadNodeRecord(Entity):
24 def get_all_latest(cls):
25 return cls.query.all()
26 #fbsync = FindbadNodeRecordSync.get_by(hostname="global")
28 # return cls.query.filter_by(round=fbsync.round)
33 def get_latest_by(cls, **kwargs):
34 return cls.query.filter_by(**kwargs).first()
35 #fbsync = FindbadNodeRecordSync.get_by(hostname="global")
37 # kwargs['round'] = fbsync.round
38 # return cls.query.filter_by(**kwargs).order_by(FindbadNodeRecord.date_checked.desc())
43 def get_latest_n_by(cls, n=3, **kwargs):
44 return cls.query.filter_by(**kwargs)
45 #fbsync = FindbadNodeRecordSync.get_by(hostname="global")
46 #kwargs['round'] = fbsync.round
49 # kwargs['round'] = kwargs['round'] - i
50 # f = cls.query.filter_by(**kwargs).first()
56 date_checked = Field(DateTime,default=datetime.now)
57 round = Field(Int,default=0)
58 hostname = Field(String,primary_key=True,default=None)
59 loginbase = Field(String)
62 kernel_version = Field(String,default=None)
63 bootcd_version = Field(String,default=None)
64 nm_status = Field(String,default=None)
65 fs_status = Field(String,default=None)
66 dns_status = Field(String,default=None)
67 princeton_comon_dir = Field(Boolean,default=False)
68 princeton_comon_running = Field(Boolean,default=False)
69 princeton_comon_procs = Field(Int,default=None)
72 plc_node_stats = Field(PickleType,default=None)
73 plc_site_stats = Field(PickleType,default=None)
74 plc_pcuid = Field(Int,default=None)
75 comon_stats = Field(PickleType,default=None)
76 port_status = Field(PickleType,default=None)
77 ssh_portused = Field(Int,default=22)
78 ssh_status = Field(Boolean,default=False)
79 ssh_error = Field(String,default=None) # set if ssh_access == False
80 ping_status = Field(Boolean,default=False)
83 observed_category = Field(String,default=None)
84 observed_status = Field(String,default=None)
86 acts_as_versioned(ignore=['date_checked'])
87 # NOTE: this is the child relation
88 #action = ManyToOne('ActionRecord', required=False)
90 class FindbadPCURecord(Entity):
92 def get_all_latest(cls):
93 return cls.query.all()
96 def get_latest_by(cls, **kwargs):
97 return cls.query.filter_by(**kwargs).first()
100 date_checked = Field(DateTime)
101 round = Field(Int,default=0)
102 plc_pcuid = Field(Int) #alternateID=True,alternateMethodName='by_pcuid')
105 plc_pcu_stats = Field(PickleType,default=None)
106 dns_status = Field(String)
107 port_status = Field(PickleType)
108 entry_complete = Field(String)
112 reboot_trial_status = Field(String)
114 acts_as_versioned(ignore=['date_checked'])