added firewall checks and notices
[monitor.git] / monitor / database / info / findbad.py
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
5 import elixir
6 import traceback
7 from elixir.ext.versioned import *
8
9 from monitor.database.dborm import mon_metadata, mon_session
10 __metadata__ = mon_metadata
11 __session__  = mon_session
12
13
14 class FindbadNodeRecord(Entity):
15         @classmethod
16         def get_all_latest(cls):
17                 return cls.query.all()
18
19         @classmethod
20         def get_latest_by(cls, **kwargs):
21                 return cls.query.filter_by(**kwargs).first()
22
23         @classmethod
24         def get_latest_by(cls, **kwargs):
25                 return cls.query.filter_by(**kwargs).first()
26
27         @classmethod
28         def get_latest_n_by(cls, n=3, **kwargs):
29                 return cls.query.filter_by(**kwargs)
30
31 # ACCOUNTING
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)
36
37 # INTERNAL
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)
49
50 # EXTERNAL
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)
62
63 # INFERRED
64         observed_category = Field(String,default=None)
65         observed_status = Field(String,default=None)
66
67         acts_as_versioned(ignore=['date_checked'])
68         # NOTE: this is the child relation
69         #action = ManyToOne('ActionRecord', required=False)
70
71 class FindbadPCURecord(Entity):
72         @classmethod
73         def get_all_latest(cls):
74                 return cls.query.all()
75
76         @classmethod
77         def get_latest_by(cls, **kwargs):
78                 return cls.query.filter_by(**kwargs).first()
79
80 # ACCOUNTING
81         date_checked = Field(DateTime)
82         round = Field(Int,default=0)
83         plc_pcuid = Field(Int)
84
85 # EXTERNAL
86         plc_pcu_stats = Field(PickleType,default=None)
87         dns_status = Field(String)
88         port_status = Field(PickleType)
89         entry_complete = Field(String)
90
91 # INTERNAL
92 # INFERRED
93         reboot_trial_status = Field(String)
94
95         acts_as_versioned(ignore=['date_checked'])