source: admin/Database/ogAdmBD-1.1.0pre-1.1.0a.sql

qndtest
Last change on this file was 52a1490, checked in by Ramón M. Gómez <ramongomez@…>, 5 years ago

#872: Renaming some SQL files.

  • Property mode set to 100644
File size: 11.0 KB
Line 
1### Fichero de actualización de la base de datos.
2# OpenGnsys 1.1.0pre - OpenGnsys 1.1.0
3#use ogAdmBD
4
5### NOTA: la configuración de MySQL solo puede modificarla el usuario "root".
6# Soportar cláusuloas GROUP BY especiales para configuración de equipos.
7#SET GLOBAL sql_mode = TRIM(BOTH ',' FROM REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
8# Activar calendario de eventos de MySQL.
9#SET GLOBAL event_scheduler = ON;
10
11# Eliminar procedimiento y disparador para evitar errores de ejecución.
12DROP PROCEDURE IF EXISTS addcols;
13DROP TRIGGER IF EXISTS registrar_acciones;
14# Procedimiento para actualización condicional de tablas.
15DELIMITER '//'
16CREATE PROCEDURE addcols() BEGIN
17        # Añadir campo para incluir aulas en proyecto Remote PC (ticket #708).
18        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
19                        WHERE COLUMN_NAME='inremotepc' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE())
20        THEN
21                ALTER TABLE aulas
22                        ADD inremotepc TINYINT DEFAULT 0;
23        END IF;
24        # Añadir campo para incluir imágenes en proyecto Remote PC (ticket #708).
25        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
26                        WHERE COLUMN_NAME='inremotepc' AND TABLE_NAME='imagenes' AND TABLE_SCHEMA=DATABASE())
27        THEN
28                ALTER TABLE imagenes
29                        ADD inremotepc TINYINT DEFAULT 0;
30        END IF;
31        # Añadir campo para clave de acceso a la API REST (ticket #708).
32        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
33                        WHERE COLUMN_NAME='apikey' AND TABLE_NAME='usuarios' AND TABLE_SCHEMA=DATABASE())
34        THEN
35                ALTER TABLE usuarios
36                        ADD apikey VARCHAR(32) NOT NULL DEFAULT '';
37        END IF;
38        # Añadir porcentaje de uso de sistema de ficheros (ticket #711)
39        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
40                        WHERE COLUMN_NAME='uso' AND TABLE_NAME='ordenadores_particiones' AND TABLE_SCHEMA=DATABASE())
41        THEN
42                ALTER TABLE ordenadores_particiones
43                        ADD uso TINYINT NOT NULL DEFAULT 0;
44        END IF;
45        # Añadir nº de serie (ticket #713)
46        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
47                        WHERE COLUMN_NAME='numserie' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE())
48        THEN
49                ALTER TABLE ordenadores
50                        ADD numserie varchar(25) DEFAULT NULL AFTER nombreordenador;
51        END IF;
52        # Añadir campo para clave de acceso a la API REST de OGAgent (ticket #718).
53        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
54                        WHERE COLUMN_NAME='agentkey' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE())
55        THEN
56                ALTER TABLE ordenadores
57                        ADD agentkey VARCHAR(32) DEFAULT NULL;
58        END IF;
59        # Añadir índice para mostrar correctamente el formulario de estado.
60        IF NOT EXISTS (SELECT * FROM information_schema.STATISTICS
61                        WHERE INDEX_NAME='idaulaip' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE())
62        THEN
63                ALTER TABLE ordenadores
64                        ADD KEY idaulaip (idaula ASC, ip ASC);
65        END IF;
66        # Añadir campo para directorio de ogLive asociado al cliente (ticket #768).
67        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
68                        WHERE COLUMN_NAME='oglivedir' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE())
69        THEN
70                ALTER TABLE ordenadores
71                        ADD oglivedir VARCHAR(50) NOT NULL DEFAULT 'ogLive';
72        END IF;
73        # Añadir campo para directorio de ogLive asociado al cliente (ticket #768).
74        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
75                        WHERE COLUMN_NAME='oglivedir' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE())
76        THEN
77                ALTER TABLE aulas
78                        ADD oglivedir VARCHAR(50) NOT NULL DEFAULT 'ogLive';
79        END IF;
80        # Eliminar campos sin uso en aulas (ticket #730).
81        IF EXISTS (SELECT * FROM information_schema.COLUMNS
82                        WHERE COLUMN_NAME='cuadro_x' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE())
83        THEN
84                ALTER TABLE aulas
85                        DROP cuadro_x,
86                        DROP cuadro_y;
87        END IF;
88        # Eliminar campos no usado en inventario de hardware (ticket #713).
89        IF EXISTS (SELECT * FROM information_schema.COLUMNS
90                        WHERE COLUMN_NAME='pci' AND TABLE_NAME='tipohardwares' AND TABLE_SCHEMA=DATABASE())
91        THEN
92                ALTER TABLE tipohardwares
93                        DROP pci;
94        END IF;
95        # Añadir servidor de sincronización horaria NTP (ticket #725).
96        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
97                        WHERE COLUMN_NAME='ntp' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE())
98        THEN
99                ALTER TABLE aulas
100                        ADD ntp VARCHAR(30) AFTER proxy;
101        END IF;
102        # Directorios en repo para distintas UO (ticket #678).
103        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
104                        WHERE COLUMN_NAME='ogunit' AND TABLE_NAME='entidades' AND TABLE_SCHEMA=DATABASE())
105        THEN
106                ALTER TABLE entidades
107                        ADD ogunit TINYINT(1) NOT NULL DEFAULT 0;
108        END IF;
109        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
110                        WHERE COLUMN_NAME='directorio' AND TABLE_NAME='centros' AND TABLE_SCHEMA=DATABASE())
111        THEN
112                ALTER TABLE centros
113                        ADD directorio VARCHAR(50) DEFAULT '';
114        END IF;
115        # Nº de revisión de imagen (ticket #737).
116        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
117                        WHERE COLUMN_NAME='revision' AND TABLE_NAME='imagenes' AND TABLE_SCHEMA=DATABASE())
118        THEN
119                ALTER TABLE imagenes
120                        ADD revision SMALLINT UNSIGNED NOT NULL DEFAULT 0 AFTER nombreca;
121        END IF;
122        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
123                        WHERE COLUMN_NAME='revision' AND TABLE_NAME='ordenadores_particiones' AND TABLE_SCHEMA=DATABASE())
124        THEN
125                ALTER TABLE ordenadores_particiones
126                        ADD revision SMALLINT UNSIGNED NOT NULL DEFAULT 0 AFTER idimagen;
127        END IF;
128        # Incluir campo sistema operativo en el perfil de software (tickets #738 #713)
129        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
130                        WHERE COLUMN_NAME='idnombreso' AND TABLE_NAME='perfilessoft'  AND TABLE_SCHEMA=DATABASE())
131        THEN 
132                ALTER TABLE perfilessoft
133                        ADD idnombreso SMALLINT UNSIGNED AFTER idperfilsoft;
134        END IF;
135        # Añadir campo para clave de acceso a la API REST del repositorio (ticket #743).
136        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
137                        WHERE COLUMN_NAME='apikey' AND TABLE_NAME='repositorios' AND TABLE_SCHEMA=DATABASE())
138        THEN
139                ALTER TABLE repositorios
140                        ADD apikey VARCHAR(32) NOT NULL DEFAULT '';
141        END IF;
142        # Codificar claves de los usuarios, si fuese necesario (ticket #778)
143        IF ((SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS
144              WHERE COLUMN_NAME='pasguor' AND TABLE_NAME='usuarios' AND TABLE_SCHEMA=DATABASE()) != 56)
145        THEN
146                ALTER TABLE usuarios
147                        MODIFY pasguor VARCHAR(56) NOT NULL DEFAULT '';
148                INSERT INTO usuarios (idusuario, pasguor)
149                        SELECT idusuario, pasguor FROM usuarios
150                        ON DUPLICATE KEY UPDATE
151                                pasguor=SHA2(VALUES(pasguor), 224);
152        END IF;
153        # Crear tabla de log para la cola de acciones (ticket #782)
154        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
155                        WHERE TABLE_NAME='acciones_log' AND TABLE_SCHEMA=DATABASE())
156        THEN
157                CREATE TABLE acciones_log LIKE acciones;
158                ALTER TABLE acciones_log ADD fecha_borrado DATETIME;
159        END IF;
160END//
161# Disparador para mover acciones borradas a la tabla de registro de acciones.
162CREATE TRIGGER registrar_acciones BEFORE DELETE ON acciones FOR EACH ROW
163BEGIN
164        INSERT INTO acciones_log VALUES
165                (OLD.idaccion, OLD.tipoaccion, OLD.idtipoaccion, OLD.descriaccion,
166                OLD.idordenador, OLD.ip, OLD.sesion, OLD.idcomando, OLD.parametros,
167                OLD.fechahorareg, OLD.fechahorafin, OLD.estado, OLD.resultado,
168                OLD.descrinotificacion, OLD.ambito, OLD.idambito, OLD.restrambito,
169                OLD.idprocedimiento, OLD.idtarea, OLD.idcentro, OLD.idprogramacion,
170                NOW());
171END//
172# Ejecutar actualización condicional.
173DELIMITER ';'
174CALL addcols();
175DROP PROCEDURE addcols;
176
177# Nuevos tipos de particiones y de sistemas de ficheros.
178INSERT INTO tipospar (codpar, tipopar, clonable) VALUES
179        (CONV('A9',16,10), 'NETBSD', 1),
180        (CONV('2700',16,10), 'WIN-RECOV', 1),
181        (CONV('8302',16,10), 'LINUX', 1),
182        (CONV('A504',16,10), 'FREEBSD', 1),
183        (CONV('A901',16,10), 'NETBSD-SWAP', 0),
184        (CONV('A902',16,10), 'NETBSD', 1),
185        (CONV('A903',16,10), 'NETBSD', 1),
186        (CONV('A904',16,10), 'NETBSD', 1),
187        (CONV('A905',16,10), 'NETBSD', 1),
188        (CONV('A906',16,10), 'NETBSD-RAID', 1),
189        (CONV('AF02',16,10), 'HFS-RAID', 1),
190        (CONV('FB00',16,10), 'VMFS', 1),
191        (CONV('FB01',16,10), 'VMFS-RESERV', 1),
192        (CONV('FB02',16,10), 'VMFS-KRN', 1),
193        (CONV('10000',16,10), 'LVM-LV', 1),
194        (CONV('10010',16,10), 'ZFS-VOL', 1)
195        ON DUPLICATE KEY UPDATE
196                codpar=VALUES(codpar), tipopar=VALUES(tipopar), clonable=VALUES(clonable);
197INSERT INTO sistemasficheros (idsistemafichero, nemonico, descripcion) VALUES
198        (19, 'LINUX-SWAP', 'LINUX-SWAP'),
199        (20, 'F2FS', 'F2FS'),
200        (21, 'NILFS2', 'NILFS2')
201                ON DUPLICATE KEY UPDATE
202                idsistemafichero=VALUES(idsistemafichero), nemonico=VALUES(nemonico), descripcion=VALUES(descripcion);
203
204# Preparar generación de claves de acceso a la API REST para el usuario principal y a la del repositorio principal (tickets #708 y #743).
205UPDATE usuarios
206        SET apikey = 'APIKEY'
207        WHERE idusuario = 1 AND apikey = '';
208UPDATE repositorios
209        SET apikey = 'REPOKEY'
210        WHERE idrepositorio = 1 AND apikey = '';
211
212# Nuevos componentes hardware (ticket #713)
213INSERT INTO tipohardwares (idtipohardware, descripcion, urlimg, nemonico) VALUES
214        (17, 'Chasis del Sistema', '', 'cha'),
215        (18, 'Controladores de almacenamiento', '../images/iconos/almacenamiento.png', 'sto'),
216        (19, 'Tipo de proceso de arranque', '../images/iconos/arranque.png', 'boo')
217        ON DUPLICATE KEY UPDATE
218                descripcion=VALUES(descripcion), urlimg=VALUES(urlimg), nemonico=VALUES(nemonico);
219
220# Número de puestos del aula permite valores hasta 32768 (ticket #747)
221ALTER TABLE aulas
222        MODIFY puestos SMALLINT DEFAULT NULL;
223
224# Nuevas tablas para datos del proyecto Remote PC y operaciones de OGAgent (ticket #708).
225DROP TABLE IF EXISTS remotepc; 
226CREATE TABLE remotepc ( 
227        id INT(11) NOT NULL, 
228        reserved DATETIME DEFAULT NULL, 
229        urllogin VARCHAR(100), 
230        urllogout VARCHAR(100), 
231        language VARCHAR(5), 
232        PRIMARY KEY (id) 
233        ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
234DROP TABLE IF EXISTS ogagent_queue;
235CREATE TABLE ogagent_queue (
236        id INT(11) NOT NULL AUTO_INCREMENT,
237        clientid INT(11) NOT NULL,
238        exectime DATETIME DEFAULT NULL,
239        operation VARCHAR(25),
240        PRIMARY KEY (id)
241        ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
242
243# Nuevo comando "Enviar mensaje" (ticket #779)
244INSERT INTO comandos (idcomando, descripcion, pagina, gestor, funcion, urlimg, 
245        aplicambito, visuparametros, parametros, comentarios, activo, submenu) VALUES
246        (16, 'Enviar mensaje', '../comandos/EnviarMensaje.php', '../comandos/gestores/gestor_Comandos.php', 'EnviarMensaje', '', 31, '', '', '', 1, '' )
247        ON DUPLICATE KEY UPDATE
248                descripcion=VALUES(descripcion), pagina=VALUES(pagina),
249                gestor=VALUES(gestor), funcion=VALUES(funcion),
250                aplicambito=VALUES(aplicambito), activo=VALUES(activo);
251INSERT INTO parametros (idparametro, nemonico, descripcion, nomidentificador, nomtabla, nomliteral, tipopa, visual) VALUES
252        (39, 'tit', 'Título', '', '', '', 0, 1),
253        (40, 'msj', 'Contenido', '', '', '', 0, 1)
254        ON DUPLICATE KEY UPDATE
255                nemonico=VALUES(nemonico), descripcion=VALUES(descripcion),
256                tipopa=VALUES(tipopa), visual=VALUES(visual);
257
258# Evitar error de MySQL con modo NO_ZERO_DATE (ticket #730).
259ALTER TABLE acciones
260        MODIFY fechahorareg DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00',
261        MODIFY fechahorafin DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00';
262
263# Ampliar programación de tareas hasta 2025 (ticket #732).
264ALTER TABLE programaciones
265        MODIFY annos SMALLINT DEFAULT NULL;
266
267# Eliminar tabla sin uso (ticket #730).
268DROP TABLE IF EXISTS campus;
269
Note: See TracBrowser for help on using the repository browser.