remove several files.
[monitor.git] / todo
diff --git a/todo b/todo
index 5d70086..f69785f 100644 (file)
--- a/todo
+++ b/todo
+Structure:
+
+monitor module
+       plc wrapper
+       util functions
+       pkl database access
+       database models
+       third-party data sources
+
+pcucontrol
+       maps types to code
+       reboot.py
+       interface.py
+
+       transport:
+               pyssh 
+               ssh
+               telnetlib
+       models:
+               hpilo cmds
+               intelamt cmds
+               racadm cmd
+               ipmitool cmd
+
+web
+       cgi scripts
+       tgweb
+               project...
+
+cmds
+       py scripts
+       node
+       site
+       pcu
+       query
+       grouprins
+
+bootman
+       rpyc
+       
+
+
+
+
+###############################
+for each node:
+       Check Status ->
+               if Pass Threshold -> 
+                       Create Issue -> 
+                               Take Action -> 
+                                       email
+                                       bm
+                                       pcu
+                                       plc reset
+                                       apply penalties
+                                       flag for admin
+
+for each issue
+       check issue.status
+       if issue.status is "open": 
+               issue.take_next_action()
+       if issue.closed:
+               issue.shutdown()
+       if issue.paused:
+               pass
+
+action_list for issuetype (pcudown)
+       send email
+               yield
+       send email, apply penalty
+               yield
+       send email, apply second penalty
+               yield
+       send email
+
+action_list for issuetype (badhardware)
+action_list for issuetype (dnserror)
+action_list for issuetype (nodeconfig)
+action_list for issuetype (oldbootcd)
+
+action_list for issuetype (nodedown)
+       if pcuok, reboot
+               yield
+       if pcuok, and reboot failed, set rins, reboot
+               yield
+       create_issue pcubroken
+       send email
+               yield
+       send email, apply penalty
+               yield
+       send email, apppy second penalty
+               yield
+       send email
+       
+
+TOOLS:
+  * add a '--nocache'  to the default set of options.
+  * add a cache parameter in the monitor.conf file.
+
+
 
 TODO:
- * reimplement the config.py / .config mechanism.  i'd like for many commands
+ * install openssh-server, passwd, perl-libwww-perl (for rt), rt-3.4.1,  MySQL-python
+       * had to mount -t devpts devpts /dev/pts to get ssh to work inside the
+         chroot. also, disable the pam modules in /etc/pam.d/sshd
+
+ * blue
+ * auto configuration for php configuration.  
+       maybe run translation of monitor.conf before loading monitorconfig.php?
+ * blue2
+
+ * A setup script of some kind would be nice that walked through : 
+    - writing monitorconfig.py
+       - creation of monitorconfig.php
+       - run syncplcdb.py
+       - testapi.py
+       - findbad.py on sample site.
+       - nodebad.py
+       - findbadpcus.py
+       - nodequery.py
+       - nodegroups.py
+       - loads webpage for those retreived values to confirm setup succeeded.
+
+ * reimplement the config.py / .config mechanism.  I'd like for many commands
    to share very similar argument or argument sets, as well as have some
    common config options.  I'm not sure the best way to do this.
+    
+        - features of config.py
+               * parse arguments and return an object with attributes equal to the
+                 parser values.
+               * maintain values consistently across modules at run time.
+               * have default values that are not specified at each run time.
+               * easy to import and use
 
- * pull out global configuration information from various files, like rt_db,
-   mailer.py,  auth.py, and any others.  Create a single configuration file
-   from which all others pull.
+        - config module is available via 'import config' or as returned by
+                 parsermodule.parse_args()
+     - python supports load-once modules, so subsequent imports refer to the
+          same module object.
+          
+ * have package pull in threadpool from easy_install
 
- * Find a better location to place and pull the PLK files currently in the pdb
-   directory.  Ultimately, these should be stored in a real DB.  Until then,
-   they should sit in a location that is accessible from the www scripts,
-   backend scripts, and user utilities.
+ * place PKL files in a real database
 
- * add a third package for user tools that will interact with the Monitor
-   service.  Mostly, I'm guessing this would be queries for the live status
-   nodes and a more reliable 'reboot' and 'reinstall' mechanism than currently
-   availble with PLC.
+ * clean up plc.py; there's a lot of redundent code.
 
- * convert plc and other files to use the new monitorconfig.py rather than
-   auth, or plc.*
+ * figure out python paths for user commands.
+   - directories for pickle files.
+   - add user in rpm install
+   - user permissions for data files for day-to-day operations.
+
+ * fix BayTechCtrlCUnibe expect script.
+
+ * separate modules into different, logical categories, and create a python
+   module as part of the install:
+               command line, 
+               configuration, 
+               policy, 
+               data model, 
+               data access,
+               object interfaces.
 
 Lower priority:
  * Add a more structured, 'automate' library of scripts and means of making
    batch calls, etc.
 
+ * add a third package for user tools that will interact with the Monitor
+   service.  Mostly, I'm guessing this would be queries for the live status of
+   nodes and a more reliable 'reboot' and 'reinstall' mechanism than currently
+   availble with PLC.
+
+Done:
+ * Find a better location to place and pull the PKL files currently in the pdb
+   directory.  Ultimately, these should be stored in a real DB.  Until then,
+   they should sit in a location that is accessible from the www scripts,
+   backend scripts, and user utilities.
+ * nodebad loads plc_hn2lb unconditionally
+ * nodeinfo loads act_all unconditionally
+ * change findbad.py default db name
+ * remove deps on www.printbadnodes
+ * reboot.py loads findbadpcus unconditionally.
+ * nodequery loads findbad unconditionally
+ * unified_model loads findbad unconditionally
+
+ * threadpool package.
+ * build cmdamt with g++ prior to packaging
+
+ * www/*.py need appropriate access to database.py,  config.py, monitorconfig.py, etc.
+       - need to convert monitor.conf into monitorconf.sh and monitorconf.php
+
+ * pull out global configuration information from various files, like rt_db,
+   mailer.py,  auth.py, and any others.  Create a single configuration file
+   from which all others pull.
+
+   - convert plc and other files to use the new monitorconfig.py rather than
+     auth, or plc.*
+   - need to alter all import 'auth' statements.