source: admin/Database/ogAdmBD-1.1.0pre.sql @ 5827bb9

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 5827bb9 was 049ec55c, checked in by ramon <ramongomez@…>, 8 years ago

#782: Crear nueva tabla acciones_log y crear trigger para añadir automáticamente en ella los registros borrados de la tabla acciones.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@5290 a21b9725-9963-47de-94b9-378ad31fedc9

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