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 FindbadNodeRecord(Entity):
16 def get_all_latest(cls):
17 return cls.query.all()
20 def get_latest_by(cls, **kwargs):
21 return cls.query.filter_by(**kwargs).first()
24 def get_latest_by(cls, **kwargs):
25 return cls.query.filter_by(**kwargs).first()
28 def get_latest_n_by(cls, n=3, **kwargs):
29 return cls.query.filter_by(**kwargs)
32 date_checked = Field(DateTime,default=datetime.now)
33 round = Field(Int,default=0)
34 hostname = Field(String,primary_key=True,default=None)
35 loginbase = Field(String)
38 kernel_version = Field(String,default=None)
39 bootcd_version = Field(String,default=None)
40 nm_status = Field(String,default=None)
41 fs_status = Field(String,default=None)
42 dns_status = Field(String,default=None)
43 external_dns_status = Field(Boolean,default=True)
44 uptime = Field(String,default=None)
45 rpms = Field(String,default=None)
46 princeton_comon_dir = Field(Boolean,default=False)
47 princeton_comon_running = Field(Boolean,default=False)
48 princeton_comon_procs = Field(Int,default=None)
51 plc_node_stats = Field(PickleType,default=None)
52 plc_site_stats = Field(PickleType,default=None)
53 plc_pcuid = Field(Int,default=None)
54 comon_stats = Field(PickleType,default=None)
55 port_status = Field(PickleType,default=None)
56 firewall = Field(Boolean,default=False)
57 ssh_portused = Field(Int,default=22)
58 ssh_status = Field(Boolean,default=False)
59 ssh_error = Field(String,default=None) # set if ssh_access == False
60 traceroute = Field(String,default=None)
61 ping_status = Field(Boolean,default=False)
64 observed_category = Field(String,default=None)
65 observed_status = Field(String,default=None)
67 acts_as_versioned(ignore=['date_checked'])
68 # NOTE: this is the child relation
69 #action = ManyToOne('ActionRecord', required=False)
71 class FindbadPCURecord(Entity):
73 def get_all_latest(cls):
74 return cls.query.all()
77 def get_latest_by(cls, **kwargs):
78 return cls.query.filter_by(**kwargs).first()
81 date_checked = Field(DateTime)
82 round = Field(Int,default=0)
83 plc_pcuid = Field(Int)
86 plc_pcu_stats = Field(PickleType,default=None)
87 dns_status = Field(String)
88 port_status = Field(PickleType)
89 entry_complete = Field(String)
93 reboot_trial_status = Field(String)
95 acts_as_versioned(ignore=['date_checked'])