Merge branch 'master' of defaria.com:/opt/git/clearscm
[clearscm.git] / clearadm / lib / clearadm.sql
1 -- -----------------------------------------------------------------------------
2 --
3 -- File:        $RCSfile: clearadm.sql,v $
4 -- Revision:    $Revision: 1.23 $
5 -- Description: Create the clearadm database
6 -- Author:      Andrew@DeFaria.com
7 -- Created:     Tue Nov 30 08:46:42 EST 2010
8 -- Modified:    $Date: 2011/02/09 13:28:33 $
9 -- Language:    SQL
10 --
11 -- Copyright (c) 2010, ClearSCM, Inc., all rights reserved
12 --
13 -- -----------------------------------------------------------------------------
14 -- Warning: The following line will delete the old database!
15 -- drop database if exists clearadm;
16
17 -- Create a new database
18 create database clearadm;
19
20 -- Now let's focus on this new database
21 use clearadm;
22
23 -- system: Define what makes up a system or machine
24 create table system (
25   name             varchar (255) not null,
26   alias            varchar (255),
27   active           enum (
28                      'true',
29                      'false'
30                    ) not null default 'true',
31   admin            tinytext,
32   email            tinytext,
33   os               tinytext,
34   type             enum (
35                      'Linux',
36                      'Unix',
37                      'Windows'
38                    ) not null,
39   region                 tinytext,
40   port             int default 25327,
41   lastheardfrom    datetime,
42   notification     varchar (255),
43   description        text,
44   loadavgHist      enum (
45                      '1 month',
46                      '2 months',
47                      '3 months',
48                      '4 months',
49                      '5 months',
50                      '6 months',
51                      '7 months',
52                      '8 months',
53                      '9 months',
54                      '10 months',
55                      '11 months',
56                      '1 year'
57                    ) not null default '6 months',
58   loadavgThreshold float (4,2) default 5.00,
59
60   primary key (name)
61 ) engine=innodb; -- system
62
63 -- clearcase: Information about a Clearcase system
64 create table clearcase (
65   system                    varchar (255) not null,
66   ccver                     tinytext,
67   hardware                  tinytext,
68   licenseHost               tinytext,
69   registryHost              tinytext,
70   mvfsBlocksPerDirectory    int,
71   mvfsCleartextMnodes       int,
72   mvfsDirectoryNames        int,
73   mvfsFileNames             int,
74   mvfsFreeMnodes            int,
75   mvfsInitialMnodeTableSize int,
76   mvfsMinCleartextMnodes    int,
77   mvfsMinFreeMnodes         int,
78   mvfsNamesNotFound         int,
79   mvfsRPCHandles            int,
80   interopRegion             int,
81   scalingFactor             int,
82   cleartextIdleLifetime     int,
83   vobHashTableSize          int,
84   cleartextHashTableSize    int,
85   dncHashTableSize          int,
86   threadHashTableSize       int,
87   processHashTableSize      int,
88
89   foreign key systemLink (system) references system (name) 
90     on delete cascade
91     on update cascade,
92   primary key (system)
93 ) engine=innodb; -- clearcase
94
95 -- package: A package is any software package that we wish to keep track of
96 create table package (
97   system      varchar (255) not null,
98   name        varchar (255) not null,
99   version     tinytext not null,
100   vendor      tinytext,
101   description text,
102
103   key packageIndex (name),
104   key systemIndex (system),
105   foreign key systemLink (system) references system (name)
106     on delete cascade
107     on update cascade,
108   primary key (system, name)
109 ) engine=innodb; -- package
110   
111 -- filesystem: A systems file systems that we are monitoring 
112 create table filesystem (
113   system         varchar (255) not null,
114   filesystem     varchar (255) not null,
115   fstype         tinytext not null,
116   mount          tinytext,
117   threshold      int default 90,
118   notification   varchar (255),
119   filesystemHist enum (
120                    '1 month',
121                    '2 months',
122                    '3 months',
123                    '4 months',
124                    '5 months',
125                    '6 months',
126                    '7 months',
127                    '8 months',
128                    '9 months',
129                    '10 months',
130                    '11 months',
131                    '1 year'
132                  ) not null default '6 months',
133   
134   key filesystemIndex (filesystem),
135   foreign key systemLink (system) references system (name)
136     on delete cascade
137     on update cascade,
138   primary key (system, filesystem)
139 ) engine=innodb; -- filesystem
140
141 -- fs: Contains a snapshot reading of a filesystem at a given date and time
142 create table fs (
143   system         varchar(255) not null,
144   filesystem     varchar(255) not null,
145   mount          varchar(255) not null,
146   timestamp      datetime     not null,
147   size           bigint,
148   used           bigint,
149   free           bigint,
150   reserve        bigint,
151
152   key mountIndex (mount), 
153   primary key   (system, filesystem, timestamp),
154   foreign key   filesystemLink (system, filesystem)
155     references filesystem (system, filesystem)
156       on delete cascade
157       on update cascade
158 ) engine=innodb; -- fs
159
160 -- loadavg: Contains a snapshot reading of a system's load average
161 create table loadavg (
162   system        varchar(255)    not null,
163   timestamp     datetime        not null,
164   uptime        tinytext,
165   users         int,
166   loadavg       float (4,2),
167
168   primary key   (system, timestamp),
169   foreign key systemLink (system) references system (name)
170     on delete cascade
171     on update cascade
172 ) engine=innodb; -- loadavg
173
174 -- vobs: Describe a system's vobs
175 create table vob (
176   system varchar (255) not null,
177   tag    varchar (255) not null,
178   
179   key systemIndex (system),
180   foreign key systemLink (system) references system (name)
181     on delete cascade
182     on update cascade,
183   primary key (tag)
184 ) engine=innodb; -- vob 
185
186 -- view: Describe views
187 create table view (
188   system    varchar (255) not null,
189   region    varchar (255) not null,
190   tag       varchar (255) not null,
191   owner     tinytext,
192   ownerName tinytext,
193   email     tinytext,
194   type      enum (
195               'dynamic',
196               'snapshot',
197               'web'
198             ) not null default 'dynamic',
199   gpath     tinytext,
200   modified  datetime,
201   timestamp datetime,
202   age       tinytext,
203   ageSuffix tinytext,
204   
205   key systemIndex (system),
206   foreign key systemLink (system) references system (name)
207     on delete cascade
208     on update cascade,
209   key regionIndex (region),
210   primary key (region, tag)
211 ) engine=innodb; -- view
212
213 create table task (
214   name          varchar (255) not null,
215   system        varchar (255),
216   description   text,
217   command       text not null,
218   restartable   enum (
219                   'true',
220                   'false'
221                 ) not null default 'true',
222   
223   primary key (name)
224 --  primary key (name),
225 --  foreign key systemLink (system) references system (name)
226 --    on delete cascade
227 --    on update cascade
228 ) engine=innodb; -- task
229
230 create table runlog (
231   id            int not null auto_increment,
232   task          varchar (255) not null,
233   system        varchar (255),
234   started       datetime,
235   ended         datetime,
236   alerted       enum (
237                   'true',
238                   'false'
239                 ) not null default 'false',
240   status        int,
241   message       text,
242   
243   primary key (id, task, system),
244   foreign key taskLink (task) references task (name)
245     on delete cascade
246     on update cascade,
247   foreign key systemLink (system) references system (name)
248     on delete cascade
249     on update cascade
250 ) engine=innodb; -- runlog
251   
252 create table alert (
253   name varchar (255) not null,
254   type enum (
255          'email',
256          'page',
257          'im'
258        ) not null default 'email',
259   who  tinytext,
260   
261   primary key (name)
262 ) engine=innodb; -- alert
263
264 create table notification (
265   name         varchar (255) not null,
266   alert        varchar (255) not null,
267   cond         tinytext not null,
268   nomorethan   enum (
269                  'Once an hour',
270                  'Once a day',
271                  'Once a week',
272                  'Once a month'
273                ) not null default 'Once a day',
274   
275   primary key (name),
276   foreign key alertLink (alert) references alert (name)
277     on delete cascade
278     on update cascade
279  ) engine=innodb; -- notification
280  
281 create table schedule (
282   name          varchar (255) not null,
283   task          varchar (255) not null,
284   notification  varchar (255) not null,
285   frequency     tinytext,
286   active        enum (
287                   'true',
288                   'false'
289                 ) not null default 'true',
290   lastrunid     int,
291   
292   primary key (name),
293   foreign key taskLink (task) references task (name)
294     on delete cascade
295     on update cascade,
296   foreign key notificationLink (notification) references notification (name)
297     on delete cascade
298     on update cascade
299 ) engine=innodb; -- schedule
300
301 create table alertlog (
302   id           int not null auto_increment,
303   alert        varchar (255) not null,
304   system       varchar (255) not null,
305   notification varchar (255) not null,
306   runlog       int not null,
307   timestamp    datetime,
308   message      text,
309   
310   primary key (id, alert),
311   key         (system),
312   foreign key alertLink (alert) references alert (name)
313     on delete cascade
314     on update cascade,
315   foreign key notificationLink (notification) references notification (name)
316     on delete cascade
317     on update cascade,
318   foreign key runlogLink (runlog) references runlog (id)
319     on delete cascade
320     on update cascade
321 ) engine=innodb; -- alertlog