SAM: Activate scanning for "detached" objects.
[opensuse:supportability-analysis-module.git] / README
1 Supportability Analyzer Module -- SAM
2
3 Outline
4 =======
5 1. Easy: Proof-of-Concept  (5-10 days)
6  a) enumerate all installed packages (according to RPM database)
7  b) "verify" those packages (including dependencies)  "in-tree"
8     (read: using 'rpm -V', chrooted or not)
9  c) list "violated" package dependencies
10  d) list "modified" files (per package, with attribution, like 'config')
11  e) list "detached" files (not belonging to any package)
12  f) black-or-white decision per package based on 1c) and 1d)
13     (e.g. changes to config-files allowed, other changes not)
14     merely pointing at "unresolved" objects from 1e)
15  g) black-or-white decision per tree based on 1f)
16
17 2. Advanced: Usable  (10-20 days)
18  a) perform 1b) "out-of-tree", i.e. re-implement verification based
19     on checksums, mode-bits, etc. taken from database
20  b) possibly perform 1b) against a trusted (external) repository
21  c) implement per-package overrides for 1f) making it less "binary"
22  d) provide method to allow violated dependencies in 1f)
23  e) account for detached files in "sensitive" directories
24     (e.g. '/etc/modprobe.d') in 1f)
25  f) allow overriding a "most-permissive" built-in rule-set with
26     "stricter" incarnations (e.g. for different levels of support)
27  g) generate report as JSON
28
29
30 3. Ultimate: Satisfactory  (open-ended)
31  a) determine "modified in an acceptable way"
32  b) find out, whether it's necessary to extend 2c) to groups of packages
33  c) create list of "negligible" dependencies for 2d)
34  d) account for more detached files, by specifying a "comprehensive" list
35     of "sensitive" directories to be used by 2e)
36  e) incorporate packagedb-assertions regarding supportability.
37  f) define examples for "stricter rule-sets" for 2f)
38
39 Conventions
40 ===========
41 * Exit Codes
42   Error conditons leading to premature termination are flagged with 127.
43   Success, i.e. "supported" exits with 0.
44   All other values are to be considered "NOT supported" (for now).
45
46 Statistics
47 ==========
48 cs.00:   659M,  32902 inodes,  214 rpms
49   33MB: 0:16 -- 0:02
50 thulium: 4.8G, 190311 inodes, 1100 rpms
51  158MB: 5:06 -- 0:12