b3dc4def52688fde312261cd59fa3506ae20c461
[monitor.git] / todo
1
2 for each node:
3         Check Status ->
4                 if Pass Threshold -> 
5                         Create Issue -> 
6                                 Take Action -> 
7                                         email
8                                         bm
9                                         pcu
10                                         plc reset
11                                         apply penalties
12                                         flag for admin
13
14 for each issue
15         check issue.status
16         if issue.status is "open": 
17                 issue.take_next_action()
18         if issue.closed:
19                 issue.shutdown()
20         if issue.paused:
21                 pass
22
23 action_list for issuetype (pcudown)
24         send email
25                 yield
26         send email, apply penalty
27                 yield
28         send email, apply second penalty
29                 yield
30         send email
31
32 action_list for issuetype (badhardware)
33 action_list for issuetype (dnserror)
34 action_list for issuetype (nodeconfig)
35 action_list for issuetype (oldbootcd)
36
37 action_list for issuetype (nodedown)
38         if pcuok, reboot
39                 yield
40         if pcuok, and reboot failed, set rins, reboot
41                 yield
42         create_issue pcubroken
43         send email
44                 yield
45         send email, apply penalty
46                 yield
47         send email, apppy second penalty
48                 yield
49         send email
50         
51
52 TOOLS:
53   * add a '--nocache'  to the default set of options.
54   * add a cache parameter in the monitor.conf file.
55
56
57
58 TODO:
59  * install openssh-server, passwd, perl-libwww-perl (for rt), rt-3.4.1,  MySQL-python
60         * had to mount -t devpts devpts /dev/pts to get ssh to work inside the
61           chroot. also, disable the pam modules in /etc/pam.d/sshd
62
63  * blue
64  * auto configuration for php configuration.  
65         maybe run translation of monitor.conf before loading monitorconfig.php?
66  * blue2
67
68  * A setup script of some kind would be nice that walked through : 
69     - writing monitorconfig.py
70         - creation of monitorconfig.php
71         - run syncplcdb.py
72         - testapi.py
73         - findbad.py on sample site.
74         - nodebad.py
75         - findbadpcus.py
76         - nodequery.py
77         - nodegroups.py
78         - loads webpage for those retreived values to confirm setup succeeded.
79
80  * reimplement the config.py / .config mechanism.  I'd like for many commands
81    to share very similar argument or argument sets, as well as have some
82    common config options.  I'm not sure the best way to do this.
83     
84          - features of config.py
85                 * parse arguments and return an object with attributes equal to the
86                   parser values.
87                 * maintain values consistently across modules at run time.
88                 * have default values that are not specified at each run time.
89                 * easy to import and use
90
91          - config module is available via 'import config' or as returned by
92                   parsermodule.parse_args()
93      - python supports load-once modules, so subsequent imports refer to the
94           same module object.
95            
96  * have package pull in threadpool from easy_install
97
98  * place PKL files in a real database
99
100  * clean up plc.py; there's a lot of redundent code.
101
102  * figure out python paths for user commands.
103    - directories for pickle files.
104    - add user in rpm install
105    - user permissions for data files for day-to-day operations.
106
107  * fix BayTechCtrlCUnibe expect script.
108
109  * separate modules into different, logical categories, and create a python
110    module as part of the install:
111                 command line, 
112                 configuration, 
113                 policy, 
114                 data model, 
115                 data access,
116                 object interfaces.
117
118 Lower priority:
119  * Add a more structured, 'automate' library of scripts and means of making
120    batch calls, etc.
121
122  * add a third package for user tools that will interact with the Monitor
123    service.  Mostly, I'm guessing this would be queries for the live status of
124    nodes and a more reliable 'reboot' and 'reinstall' mechanism than currently
125    availble with PLC.
126
127 Done:
128  * Find a better location to place and pull the PKL files currently in the pdb
129    directory.  Ultimately, these should be stored in a real DB.  Until then,
130    they should sit in a location that is accessible from the www scripts,
131    backend scripts, and user utilities.
132  * nodebad loads plc_hn2lb unconditionally
133  * nodeinfo loads act_all unconditionally
134  * change findbad.py default db name
135  * remove deps on www.printbadnodes
136  * reboot.py loads findbadpcus unconditionally.
137  * nodequery loads findbad unconditionally
138  * unified_model loads findbad unconditionally
139
140  * threadpool package.
141  * build cmdamt with g++ prior to packaging
142
143  * www/*.py need appropriate access to database.py,  config.py, monitorconfig.py, etc.
144         - need to convert monitor.conf into monitorconf.sh and monitorconf.php
145
146  * pull out global configuration information from various files, like rt_db,
147    mailer.py,  auth.py, and any others.  Create a single configuration file
148    from which all others pull.
149
150    - convert plc and other files to use the new monitorconfig.py rather than
151      auth, or plc.*
152    - need to alter all import 'auth' statements.