Removed /usr/local from CDPATH
[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   loadavgsmall     blob,
60   loadavg          blob,
61
62   primary key (name)
63 ) engine=innodb; -- system
64
65 -- clearcase: Information about a Clearcase system
66 create table clearcase (
67   system                    varchar (255) not null,
68   ccver                     tinytext,
69   hardware                  tinytext,
70   licenseHost               tinytext,
71   registryHost              tinytext,
72   mvfsBlocksPerDirectory    int,
73   mvfsCleartextMnodes       int,
74   mvfsDirectoryNames        int,
75   mvfsFileNames             int,
76   mvfsFreeMnodes            int,
77   mvfsInitialMnodeTableSize int,
78   mvfsMinCleartextMnodes    int,
79   mvfsMinFreeMnodes         int,
80   mvfsNamesNotFound         int,
81   mvfsRPCHandles            int,
82   interopRegion             int,
83   scalingFactor             int,
84   cleartextIdleLifetime     int,
85   vobHashTableSize          int,
86   cleartextHashTableSize    int,
87   dncHashTableSize          int,
88   threadHashTableSize       int,
89   processHashTableSize      int,
90
91   foreign key systemLink (system) references system (name) 
92     on delete cascade
93     on update cascade,
94   primary key (system)
95 ) engine=innodb; -- clearcase
96
97 -- package: A package is any software package that we wish to keep track of
98 create table package (
99   system      varchar (255) not null,
100   name        varchar (255) not null,
101   version     tinytext not null,
102   vendor      tinytext,
103   description text,
104
105   key packageIndex (name),
106   key systemIndex (system),
107   foreign key systemLink (system) references system (name)
108     on delete cascade
109     on update cascade,
110   primary key (system, name)
111 ) engine=innodb; -- package
112   
113 -- filesystem: A systems file systems that we are monitoring 
114 create table filesystem (
115   system         varchar (255) not null,
116   filesystem     varchar (255) not null,
117   fstype         tinytext not null,
118   mount          tinytext,
119   threshold      int default 90,
120   notification   varchar (255),
121   filesystemHist enum (
122                    '1 month',
123                    '2 months',
124                    '3 months',
125                    '4 months',
126                    '5 months',
127                    '6 months',
128                    '7 months',
129                    '8 months',
130                    '9 months',
131                    '10 months',
132                    '11 months',
133                    '1 year'
134                  ) not null default '6 months',
135   fssmall        blob,
136   fslarge        blob,
137   
138   key filesystemIndex (filesystem),
139   foreign key systemLink (system) references system (name)
140     on delete cascade
141     on update cascade,
142   primary key (system, filesystem)
143 ) engine=innodb; -- filesystem
144
145 -- fs: Contains a snapshot reading of a filesystem at a given date and time
146 create table fs (
147   system         varchar(255) not null,
148   filesystem     varchar(255) not null,
149   mount          varchar(255) not null,
150   timestamp      datetime     not null,
151   size           bigint,
152   used           bigint,
153   free           bigint,
154   reserve        bigint,
155
156   key mountIndex (mount), 
157   primary key   (system, filesystem, timestamp),
158   foreign key   filesystemLink (system, filesystem)
159     references filesystem (system, filesystem)
160       on delete cascade
161       on update cascade
162 ) engine=innodb; -- fs
163
164 -- vobstorage: Contains a snapshot of a vob's storage pools at a given date
165 -- and time
166 create table vobstorage (
167   tag             varchar(255) not null,
168   region          varchar(255) not null,
169   timestamp       datetime     not null,
170   admin           decimal(10,1),
171   db              decimal(10,1),
172   cleartext       decimal(10,1),
173   derivedobj      decimal(10,1),
174   source          decimal(10,1),
175   total           decimal(10,1),
176
177   key vobtagIndex (tag, region),
178   primary key  (tag, region, timestamp)
179   foreign key vobLink (tag, region)
180     references vob (tag, region)
181       on delete cascade
182       on update cascade
183 ) engine=innodb; -- vobstorage
184
185 -- viewstorage: Contains a snapshot of a view's storage pools at a given date
186 -- and time
187 create table viewstorage (
188   tag           varchar(255) not null,
189   region        varchar(255) not null,
190   timestamp     datetime     not null,
191   private       decimal(10,1),
192   db            decimal(10,1),
193   admin         decimal(10,1),
194   total         decimal(10,1),
195
196   key viewtagIndex (tag, region),
197   primary key (tag, region, timestamp),
198   foreign key viewLink (tag, region)
199     references view (tag, region)
200       on delete cascade
201       on update cascade
202 ) engine=innodb; -- viewstorage
203
204 -- loadavg: Contains a snapshot reading of a system's load average
205 create table loadavg (
206   system        varchar(255)    not null,
207   timestamp     datetime        not null,
208   uptime        tinytext,
209   users         int,
210   loadavg       float (4,2),
211
212   primary key   (system, timestamp),
213   foreign key systemLink (system) references system (name)
214     on delete cascade
215     on update cascade
216 ) engine=innodb; -- loadavg
217
218 -- vob: Describe a system's vobs
219 create table vob (
220   tag             varchar (255) not null,
221   region          varchar (255) not null,
222   adminsmall      blob,
223   dbsmall         blob,
224   cleartextsmall  blob,
225   derivedobjsmall blob,
226   sourcesmall     blob,
227   totalsmall      blob,
228   adminlarge      blob,
229   dblarge         blob,
230   cleartextlarge  blob,
231   derivedobjlarge blob,
232   sourcelarge     blob,
233   totallarge      blob,
234   
235   key vobTagIndex (tag),
236   primary key (tag, region)
237 ) engine=innodb; -- vob 
238
239 -- view: Describe views
240 create table view (
241   tag          varchar (255) not null,
242   region       varchar (255) not null,
243   owner        tinytext,
244   ownerName    tinytext,
245   email        tinytext,
246   type         enum (
247                  'dynamic',
248                  'snapshot',
249                  'web'
250                ) not null default 'dynamic',
251   gpath        tinytext,
252   modified     datetime,
253   timestamp    datetime,
254   age          tinytext,
255   ageSuffix    tinytext,
256   privatesmall blob,
257   dbsmall      blob,
258   adminsmall   blob,
259   totalsmall   blob,
260   privatelarge blob,
261   dblarge      blob,
262   adminlarge   blob,
263   totallarge   blob,
264   
265   key viewTagIndex (tag),
266   primary key (tag, region)
267 ) engine=innodb; -- view
268
269 create table task (
270   name          varchar (255) not null,
271   system        varchar (255),
272   description   text,
273   command       text not null,
274   restartable   enum (
275                   'true',
276                   'false'
277                 ) not null default 'true',
278   
279   primary key (name)
280 --  primary key (name),
281 --  foreign key systemLink (system) references system (name)
282 --    on delete cascade
283 --    on update cascade
284 ) engine=innodb; -- task
285
286 create table runlog (
287   id            int not null auto_increment,
288   task          varchar (255) not null,
289   system        varchar (255),
290   started       datetime,
291   ended         datetime,
292   alerted       enum (
293                   'true',
294                   'false'
295                 ) not null default 'false',
296   status        int,
297   message       text,
298   
299   primary key (id, task, system),
300   foreign key taskLink (task) references task (name)
301     on delete cascade
302     on update cascade,
303   foreign key systemLink (system) references system (name)
304     on delete cascade
305     on update cascade
306 ) engine=innodb; -- runlog
307   
308 create table alert (
309   name varchar (255) not null,
310   type enum (
311          'email',
312          'page',
313          'im'
314        ) not null default 'email',
315   who  tinytext,
316   
317   primary key (name)
318 ) engine=innodb; -- alert
319
320 create table notification (
321   name         varchar (255) not null,
322   alert        varchar (255) not null,
323   cond         tinytext not null,
324   nomorethan   enum (
325                  'Once an hour',
326                  'Once a day',
327                  'Once a week',
328                  'Once a month'
329                ) not null default 'Once a day',
330   
331   primary key (name),
332   foreign key alertLink (alert) references alert (name)
333     on delete cascade
334     on update cascade
335  ) engine=innodb; -- notification
336  
337 create table schedule (
338   name          varchar (255) not null,
339   task          varchar (255) not null,
340   notification  varchar (255) not null,
341   frequency     tinytext,
342   active        enum (
343                   'true',
344                   'false'
345                 ) not null default 'true',
346   lastrunid     int,
347   
348   primary key (name),
349   foreign key taskLink (task) references task (name)
350     on delete cascade
351     on update cascade,
352   foreign key notificationLink (notification) references notification (name)
353     on delete cascade
354     on update cascade
355 ) engine=innodb; -- schedule
356
357 create table alertlog (
358   id           int not null auto_increment,
359   alert        varchar (255) not null,
360   system       varchar (255) not null,
361   notification varchar (255) not null,
362   runlog       int not null,
363   timestamp    datetime,
364   message      text,
365   
366   primary key (id, alert),
367   key         (system),
368   foreign key alertLink (alert) references alert (name)
369     on delete cascade
370     on update cascade,
371   foreign key notificationLink (notification) references notification (name)
372     on delete cascade
373     on update cascade,
374   foreign key runlogLink (runlog) references runlog (id)
375     on delete cascade
376     on update cascade
377 ) engine=innodb; -- alertlog