Big update of Clearadm
[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 -- vobstorage: Contains a snapshot of a vob's storage pools at a given date
161 -- and time
162 create table vobstorage (
163   tag           varchar(255) not null,
164   region        varchar(255) not null,
165   timestamp     datetime     not null,
166   admin         decimal(10,1),
167   db            decimal(10,1),
168   cleartext     decimal(10,1),
169   derivedobj    decimal(10,1),
170   source        decimal(10,1),
171   total         decimal(10,1),
172
173   key vobtagIndex (tag),
174   primary key  (tag, region, timestamp)
175 ) engine=innodb; -- vobstorage
176
177 -- viewstorage: Contains a snapshot of a view's storage pools at a given date
178 -- and time
179 create table viewstorage (
180   tag           varchar(255) not null,
181   region        varchar(255) not null,
182   timestamp     datetime     not null,
183   private       decimal(10,1),
184   db            decimal(10,1),
185   admin         decimal(10,1),
186   total         decimal(10,1),
187
188   key viewtagIndex (tag),
189   primary key (tag, region, timestamp)
190 ) engine=innodb; -- viewstorage
191
192 -- loadavg: Contains a snapshot reading of a system's load average
193 create table loadavg (
194   system        varchar(255)    not null,
195   timestamp     datetime        not null,
196   uptime        tinytext,
197   users         int,
198   loadavg       float (4,2),
199
200   primary key   (system, timestamp),
201   foreign key systemLink (system) references system (name)
202     on delete cascade
203     on update cascade
204 ) engine=innodb; -- loadavg
205
206 -- vobs: Describe a system's vobs
207 create table vob (
208   system varchar (255) not null,
209   tag    varchar (255) not null,
210   
211   key systemIndex (system),
212   foreign key systemLink (system) references system (name)
213     on delete cascade
214     on update cascade,
215   primary key (tag)
216 ) engine=innodb; -- vob 
217
218 -- view: Describe views
219 create table view (
220   system    varchar (255) not null,
221   region    varchar (255) not null,
222   tag       varchar (255) not null,
223   owner     tinytext,
224   ownerName tinytext,
225   email     tinytext,
226   type      enum (
227               'dynamic',
228               'snapshot',
229               'web'
230             ) not null default 'dynamic',
231   gpath     tinytext,
232   modified  datetime,
233   timestamp datetime,
234   age       tinytext,
235   ageSuffix tinytext,
236   
237   key systemIndex (system),
238   foreign key systemLink (system) references system (name)
239     on delete cascade
240     on update cascade,
241   key regionIndex (region),
242   primary key (region, tag)
243 ) engine=innodb; -- view
244
245 create table task (
246   name          varchar (255) not null,
247   system        varchar (255),
248   description   text,
249   command       text not null,
250   restartable   enum (
251                   'true',
252                   'false'
253                 ) not null default 'true',
254   
255   primary key (name)
256 --  primary key (name),
257 --  foreign key systemLink (system) references system (name)
258 --    on delete cascade
259 --    on update cascade
260 ) engine=innodb; -- task
261
262 create table runlog (
263   id            int not null auto_increment,
264   task          varchar (255) not null,
265   system        varchar (255),
266   started       datetime,
267   ended         datetime,
268   alerted       enum (
269                   'true',
270                   'false'
271                 ) not null default 'false',
272   status        int,
273   message       text,
274   
275   primary key (id, task, system),
276   foreign key taskLink (task) references task (name)
277     on delete cascade
278     on update cascade,
279   foreign key systemLink (system) references system (name)
280     on delete cascade
281     on update cascade
282 ) engine=innodb; -- runlog
283   
284 create table alert (
285   name varchar (255) not null,
286   type enum (
287          'email',
288          'page',
289          'im'
290        ) not null default 'email',
291   who  tinytext,
292   
293   primary key (name)
294 ) engine=innodb; -- alert
295
296 create table notification (
297   name         varchar (255) not null,
298   alert        varchar (255) not null,
299   cond         tinytext not null,
300   nomorethan   enum (
301                  'Once an hour',
302                  'Once a day',
303                  'Once a week',
304                  'Once a month'
305                ) not null default 'Once a day',
306   
307   primary key (name),
308   foreign key alertLink (alert) references alert (name)
309     on delete cascade
310     on update cascade
311  ) engine=innodb; -- notification
312  
313 create table schedule (
314   name          varchar (255) not null,
315   task          varchar (255) not null,
316   notification  varchar (255) not null,
317   frequency     tinytext,
318   active        enum (
319                   'true',
320                   'false'
321                 ) not null default 'true',
322   lastrunid     int,
323   
324   primary key (name),
325   foreign key taskLink (task) references task (name)
326     on delete cascade
327     on update cascade,
328   foreign key notificationLink (notification) references notification (name)
329     on delete cascade
330     on update cascade
331 ) engine=innodb; -- schedule
332
333 create table alertlog (
334   id           int not null auto_increment,
335   alert        varchar (255) not null,
336   system       varchar (255) not null,
337   notification varchar (255) not null,
338   runlog       int not null,
339   timestamp    datetime,
340   message      text,
341   
342   primary key (id, alert),
343   key         (system),
344   foreign key alertLink (alert) references alert (name)
345     on delete cascade
346     on update cascade,
347   foreign key notificationLink (notification) references notification (name)
348     on delete cascade
349     on update cascade,
350   foreign key runlogLink (runlog) references runlog (id)
351     on delete cascade
352     on update cascade
353 ) engine=innodb; -- alertlog