Initial commit
[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 ) type=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 ) type=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 ) type=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 ) type=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 ) type=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 ) type=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 ) type=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 ) type=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   foreign key systemLink (system) references system (name)
225     on delete cascade
226     on update cascade,
227 ) type=innodb; -- task
228
229 create table runlog (
230   id            int not null auto_increment,
231   task          varchar (255) not null,
232   system        varchar (255),
233   started       datetime,
234   ended         datetime,
235   alerted       enum (
236                   'true',
237                   'false'
238                 ) not null default 'false',
239   status        int,
240   message       text,
241   
242   primary key (id, task, system),
243   foreign key taskLink (task) references task (name)
244     on delete cascade
245     on update cascade
246   foreign key systemLink (system) references system (name)
247     on delete cascade
248     on update cascade
249 ) type=innodb; -- runlog
250   
251 create table schedule (
252   name          varchar (255) not null,
253   task          varchar (255) not null,
254   notification  varchar (255) not null,
255   frequency     tinytext,
256   active        enum (
257                   'true',
258                   'false'
259                 ) not null default 'true',
260   lastrunid     int,
261   
262   primary key (name),
263   foreign key taskLink (task) references task (name)
264     on delete cascade
265     on update cascade
266   foreign key notificationLink (notification) references notification (name)
267     on delete cascade
268     on update cascade
269 ) type=innodb; -- schedule
270
271 create table alert (
272   name varchar (255) not null,
273   type enum (
274          'email',
275          'page',
276          'im'
277        ) not null default 'email',
278   who  tinytext,
279   
280   primary key (name)
281 ) type=innodb; -- alert
282
283 create table notification (
284   name         varchar (255) not null,
285   alert        varchar (255) not null,
286   cond         tinytext not null,
287   nomorethan   enum (
288                  'Once an hour',
289                  'Once a day',
290                  'Once a week',
291                  'Once a month'
292                ) not null default 'Once a day',
293   
294   primary key (name),
295   foreign key alertLink (alert) references alert (name)
296     on delete cascade
297     on update cascade,
298  ) type=innodb; -- notification
299  
300  create table alertlog (
301   id           int not null auto_increment,
302   alert        varchar (255) not null,
303   system       varchar (255) not null,
304   notification varchar (255) not null,
305   runlog       int not null,
306   timestamp    datetime,
307   message      text,
308   
309   primary key (id, alert),
310   key         (system),
311   foreign key alertLink (alert) references alert (name)
312     on delete cascade
313     on update cascade,
314   foreign key notificationLink (notification) references notification (name)
315     on delete cascade
316     on update cascade,
317   foreigh key runlogLink (runlog) references runlog (id)
318     on delete cascade
319     on update cascade
320 ) type=innodb; -- alertlog