summaryrefslogtreecommitdiffstats
path: root/ROADMAP
blob: 28f9b31c86e5bd20cfd69d6895e99a3e9daa5079 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117

Releases in the 1.3 series will be for development. Version 1.4.0 will
be the next full production release. I am not planning on dates right now, 
but you can expect maintennence releases for 1.2.9 as well.

With that done, it's time to figure out what we are doing for release 
1.3 development. I have a few ideas. Maybe others do as well.

DOCUMENTATION:
  We pretty much have decieded that we will doing something along 
  the lines of a literate programming model. So far, we have site 
  documentation in DocBook. I have some ideas here, which I will
  discuss in a separate thread.



OPTION PROCESSING:
  I believe we can remove reverse compatibility for non-Getopt
  option specifications. For example, 'check_ping 1 2 3 4 -p 2'
  would not be supported anymore. Support for this is a hack, 
  and making it portable is bug-prone. We should also review
  standardization of our options -- the current list is a little
  ad hoc, it should be nailed down. Details in a separate thread.

Also, 

  check_http -p 443 --ssl www.infoplease.com

should be fine, but if the getopt in use does not natively support it,
things like

  check_http www.infoplease.com -p 443 --ssl

should be trapped and result in a call to one of the usage macros
(which print a message and then exit STATE_UNKNOWN).

This means that the call_getopt() function can go away. It's an
inconsistent mess and I'd love to ditch it. I only created it to
satisfy people that wanted reverse compatibility and did not have
GNU getopt.

Bu I would like to urge that all standard plugins contain
validate_arguments(). I think this will help convey the idea that
validations hould be done, even if we don't insist on the specific
extent that each plugin must do that validation.

This is the set of standard options I envision:

Reserved:

-h, --help (REQUIRED!!!!!)
-V, --version (REQUIRED!!!!!)
-v, --verbose
-q, --quiet
-t, --timeout = INTEGER (senonds)
-c, --critical = (INT|FLOAT|RANGE|LIST) 
-w, --warning = (INT|FLOAT|RANGE|LIST)
-H, --hostname = STRING
-F, --file = STRING (usually input) 
-O, --output = STRING (output file) 

Recommended, but not reserverd: 

-I, --ipaddress = STRING
-C, --community = STRING
-a, --auth(info) = STRING (authentication or password) 
-l, --logname = STRING
-p, --password = STRING
-P, --port = INT
-u, --url = STRING (also --username if --url is not needed)

I am suggesting that port alway be '-P' (uppercase) -- we are
currently inconsistent in that regard.

I am also adding '-q' for silent running. This is totally self
centered--I am planning to use a plugin in a cron script, and I
don't want nightly emails.

As has been the case, ranges are specified with colons, like 'i:j'
and list are specified with commas like 'i,k' and may contain ranges
if it makes sense to do so. Perhaps it would be good to build a
standard list/range processing function for this task.


Programming:
  I would like to follow the GNU guidelines and remove all fixed
  length character assignments, at least to the extent possible,
  from the C-based plugins. To that end, I have made strscpy and
  friends in utils.c -- I'd like to deploy them. I have comments 
  that there is alot of duplicated code, and techniques used that
  should be cleaned up. Details in a separate thread.

Remote checks:
  I have a proposal in hand to incorporate ssh check into spopen()
  so that remote machine checks can be seemless. A nice idea, but 
  complex enough to require discussion. Another thread.

I also have a wish list, and I'm sure I've forgot some items. I'll 
list mine, please respond with other items that can be put into the 
sourceforge task manager:

  Indent all code in a GNU-compatible manner (indent -ts 2 -br)
  Add RAND_seed to check_http for --ssl on systems without /dev/random
  Add regex filtering to check_procs --args option
  Add working procs syntax for AIX check_procs
  Allow check_disk to exclude non-local disks
  Add md5 checksumming to check_http
  Complete unification of check_tcp and friends
  Add SSL in a general way to check_tcp and friends
  Patches to check_log from Joonas
  Add calculator engine and snmpwalk to check_snmp
  Is there a bug in check_oracle
  Are there outstanding bugs in check_snmp
  Change check_http --onredirect to default as STATE_UNKNOWN
  Create plugin to check tftp servers
  Create plugin wrapper to invert error status