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