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

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 e7d8e52 was 90c670e, checked in by albertogp <albertogp@…>, 8 years ago

#768
Introducir cambios en la consola web para gestionar multiples ogLives

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

  • Property mode set to 100644
File size: 10.3 KB
RevLine 
[6f62a1a]1### Fichero de actualización de la base de datos.
[2b2311f]2# OpenGnsys 1.1.0
[6f62a1a]3#use ogAdmBD
4
[d520101]5### NOTA: la configuración de MySQL solo puede modificarla el usuario "root".
[dee9fac]6# Soportar cláusuloas GROUP BY especiales para configuración de equipos.
[d520101]7#SET GLOBAL sql_mode = TRIM(BOTH ',' FROM REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
[dee9fac]8# Activar calendario de eventos de MySQL.
[d520101]9#SET GLOBAL event_scheduler = ON;
[0a42c1c]10
11# Eliminar procedimiento y disparador para evitar errores de ejecución.
[6f62a1a]12DROP PROCEDURE IF EXISTS addcols;
[0a42c1c]13DROP TRIGGER IF EXISTS registrar_acciones;
[6f62a1a]14# Procedimiento para actualización condicional de tablas.
[049ec55c]15DELIMITER '//'
[6f62a1a]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;
[750388b]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;
[6f62a1a]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;
[b8157d6]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;
[e8d2851]59        # Añadir índice para mostrar correctamente el formulario de estado.
[0cfe47a]60        IF NOT EXISTS (SELECT * FROM information_schema.STATISTICS
61                        WHERE INDEX_NAME='idaulaip' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE())
[e8d2851]62        THEN
63                ALTER TABLE ordenadores
64                        ADD KEY idaulaip (idaula ASC, ip ASC);
65        END IF;
[c311ef2f]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';
[90c670e]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';
[c311ef2f]79        END IF;
[6f62a1a]80        # Eliminar campos no usado en inventario de hardware (ticket #713).
81        IF EXISTS (SELECT * FROM information_schema.COLUMNS
82                        WHERE COLUMN_NAME='pci' AND TABLE_NAME='tipohardwares' AND TABLE_SCHEMA=DATABASE())
83        THEN
84                ALTER TABLE tipohardwares
85                        DROP pci;
86        END IF;
[750388b]87        # Añadir servidor de sincronización horaria NTP (ticket #725).
88        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
89                        WHERE COLUMN_NAME='ntp' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE())
90        THEN
91                ALTER TABLE aulas
92                        ADD ntp VARCHAR(30) AFTER proxy;
93        END IF;
[56529d2]94        # Directorios en repo para distintas UO (ticket #678).
95        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
96                        WHERE COLUMN_NAME='ogunit' AND TABLE_NAME='entidades' AND TABLE_SCHEMA=DATABASE())
[b0cd6af]97        THEN
[56529d2]98                ALTER TABLE entidades
99                        ADD ogunit TINYINT(1) NOT NULL DEFAULT 0;
100        END IF;
101        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
102                        WHERE COLUMN_NAME='directorio' AND TABLE_NAME='centros' AND TABLE_SCHEMA=DATABASE())
[b0cd6af]103        THEN
[56529d2]104                ALTER TABLE centros
105                        ADD directorio VARCHAR(50) DEFAULT '';
106        END IF;
[84fa8d6]107        # Nº de revisión de imagen (ticket #737).
108        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
109                        WHERE COLUMN_NAME='revision' AND TABLE_NAME='imagenes' AND TABLE_SCHEMA=DATABASE())
110        THEN
111                ALTER TABLE imagenes
112                        ADD revision SMALLINT UNSIGNED NOT NULL DEFAULT 0 AFTER nombreca;
113        END IF;
114        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
115                        WHERE COLUMN_NAME='revision' AND TABLE_NAME='ordenadores_particiones' AND TABLE_SCHEMA=DATABASE())
116        THEN
117                ALTER TABLE ordenadores_particiones
118                        ADD revision SMALLINT UNSIGNED NOT NULL DEFAULT 0 AFTER idimagen;
119        END IF;
[212d995]120        # Incluir campo sistema operativo en el perfil de software (tickets #738 #713)
121        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
122                        WHERE COLUMN_NAME='idnombreso' AND TABLE_NAME='perfilessoft'  AND TABLE_SCHEMA=DATABASE())
123        THEN
124                ALTER TABLE perfilessoft
125                        ADD idnombreso SMALLINT UNSIGNED AFTER idperfilsoft;
126        END IF;
[15acccd]127        # Añadir campo para clave de acceso a la API REST del repositorio (ticket #743).
128        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
129                        WHERE COLUMN_NAME='apikey' AND TABLE_NAME='repositorios' AND TABLE_SCHEMA=DATABASE())
130        THEN
131                ALTER TABLE repositorios
132                        ADD apikey VARCHAR(32) NOT NULL DEFAULT '';
133        END IF;
[2b2311f]134        # Codificar claves de los usuarios, si fuese necesario (ticket #778)
[0a42c1c]135        IF ((SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS
136              WHERE COLUMN_NAME='pasguor' AND TABLE_NAME='usuarios' AND TABLE_SCHEMA=DATABASE()) != 56)
[2b2311f]137        THEN
138                ALTER TABLE usuarios
139                        MODIFY pasguor VARCHAR(56) NOT NULL DEFAULT '';
140                INSERT INTO usuarios (idusuario, pasguor)
141                        SELECT idusuario, pasguor FROM usuarios
142                        ON DUPLICATE KEY UPDATE
143                                pasguor=SHA2(VALUES(pasguor),224);
144        END IF;
[d4f6719]145        # Crear tabla de log para la cola de acciones (ticket #782)
[049ec55c]146        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS
147                        WHERE TABLE_NAME='acciones_log' AND TABLE_SCHEMA=DATABASE())
148        THEN
149                CREATE TABLE acciones_log LIKE acciones;
150                ALTER TABLE acciones_log ADD fecha_borrado DATETIME;
151        END IF;
[6f62a1a]152END//
[0a42c1c]153# Disparador para mover acciones borradas a la tabla de registro de acciones.
154CREATE TRIGGER registrar_acciones BEFORE DELETE ON acciones FOR EACH ROW
155BEGIN
156        INSERT INTO acciones_log VALUES
157                (OLD.idaccion, OLD.tipoaccion, OLD.idtipoaccion, OLD.descriaccion,
158                OLD.idordenador, OLD.ip, OLD.sesion, OLD.idcomando, OLD.parametros,
159                OLD.fechahorareg, OLD.fechahorafin, OLD.estado, OLD.resultado,
160                OLD.descrinotificacion, OLD.ambito, OLD.idambito, OLD.restrambito,
161                OLD.idprocedimiento, OLD.idtarea, OLD.idcentro, OLD.idprogramacion,
162                NOW());
163END//
[6f62a1a]164# Ejecutar actualización condicional.
[049ec55c]165DELIMITER ';'
[6f62a1a]166CALL addcols();
167DROP PROCEDURE addcols;
168
[a616248]169# Nuevos tipos de particiones y de sistemas de ficheros.
[6f62a1a]170INSERT INTO tipospar (codpar, tipopar, clonable) VALUES
171        (CONV('A9',16,10), 'NETBSD', 1),
172        (CONV('2700',16,10), 'WIN-RECOV', 1),
173        (CONV('8302',16,10), 'LINUX', 1),
174        (CONV('A504',16,10), 'FREEBSD', 1),
175        (CONV('A901',16,10), 'NETBSD-SWAP', 0),
176        (CONV('A902',16,10), 'NETBSD', 1),
177        (CONV('A903',16,10), 'NETBSD', 1),
178        (CONV('A904',16,10), 'NETBSD', 1),
179        (CONV('A905',16,10), 'NETBSD', 1),
180        (CONV('A906',16,10), 'NETBSD-RAID', 1),
181        (CONV('AF02',16,10), 'HFS-RAID', 1),
182        (CONV('FB00',16,10), 'VMFS', 1),
183        (CONV('FB01',16,10), 'VMFS-RESERV', 1),
[dee9fac]184        (CONV('FB02',16,10), 'VMFS-KRN', 1),
185        (CONV('10000',16,10), 'LVM-LV', 1),
186        (CONV('10010',16,10), 'ZFS-VOL', 1)
[6f62a1a]187        ON DUPLICATE KEY UPDATE
188                codpar=VALUES(codpar), tipopar=VALUES(tipopar), clonable=VALUES(clonable);
[a616248]189INSERT INTO sistemasficheros (idsistemafichero, nemonico, descripcion) VALUES
190        (19, 'LINUX-SWAP', 'LINUX-SWAP'),
191        (20, 'F2FS', 'F2FS'),
192        (21, 'NILFS2', 'NILFS2')
193                ON DUPLICATE KEY UPDATE
194                idsistemafichero=VALUES(idsistemafichero), nemonico=VALUES(nemonico), descripcion=VALUES(descripcion);
195
[6f62a1a]196
[8e0f770]197# 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).
[077d8df1]198UPDATE usuarios
199        SET apikey = 'APIKEY'
200        WHERE idusuario = 1 AND apikey = '';
[8e0f770]201UPDATE repositorios
202        SET apikey = 'REPOKEY'
203        WHERE idrepositorio = 1 AND apikey = '';
[077d8df1]204
[6f62a1a]205# Nuevos componentes hardware (ticket #713)
206INSERT INTO tipohardwares (idtipohardware, descripcion, urlimg, nemonico) VALUES
207        (17, 'Chasis del Sistema', '', 'cha'),
[212d995]208        (18, 'Controladores de almacenamiento', '../images/iconos/almacenamiento.png', 'sto'),
209        (19, 'Tipo de proceso de arranque', '../images/iconos/arranque.png', 'boo')
[6f62a1a]210        ON DUPLICATE KEY UPDATE
211                descripcion=VALUES(descripcion), urlimg=VALUES(urlimg), nemonico=VALUES(nemonico);
212
[7da6e599]213# Número de puestos del aula permite valores hasta 32768 (ticket #747)
[049ec55c]214ALTER TABLE aulas
215        MODIFY puestos SMALLINT DEFAULT NULL;
[27e3d34]216
217# Nueva tabla para datos del proyecto Remote PC (ticket #708).
218CREATE TABLE IF NOT EXISTS remotepc (
[d8b6c70]219        id INT(11) NOT NULL,
220        reserved DATETIME DEFAULT NULL,
221        urllogin VARCHAR(100),
222        urllogout VARCHAR(100),
223        PRIMARY KEY (id)
224        ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
225ALTER TABLE remotepc
226       MODIFY reserved DATETIME DEFAULT NULL;
[27e3d34]227
[e4fc3fd]228# Nuevo comando "Enviar mensaje" (ticket #779)
[0a42c1c]229INSERT INTO comandos (idcomando, descripcion, pagina, gestor, funcion, urlimg,
230        aplicambito, visuparametros, parametros, comentarios, activo, submenu) VALUES
231        (16, 'Enviar mensaje', '../comandos/EnviarMensaje.php', '../comandos/gestores/gestor_Comandos.php', 'EnviarMensaje', '', 31, '', '', '', 1, '' )
232        ON DUPLICATE KEY UPDATE
233                descripcion=VALUES(descripcion), pagina=VALUES(pagina),
234                gestor=VALUES(gestor), funcion=VALUES(funcion),
235                aplicambito=VALUES(aplicambito), activo=VALUES(activo);
[e4fc3fd]236INSERT INTO parametros (idparametro, nemonico, descripcion, nomidentificador, nomtabla, nomliteral, tipopa, visual) VALUES
[d8b6c70]237        (39, 'tit', 'Título', '', '', '', 0, 1),
[0a42c1c]238        (40, 'msj', 'Contenido', '', '', '', 0, 1)
239        ON DUPLICATE KEY UPDATE
240                nemonico=VALUES(nemonico), descripcion=VALUES(descripcion),
241                tipopa=VALUES(tipopa), visual=VALUES(visual);
[31ad046]242
243# Evitar error de MySQL con modo NO_ZERO_DATE (ticket #730).
244ALTER TABLE acciones
245        MODIFY fechahorareg DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00',
246        MODIFY fechahorafin DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00';
247
Note: See TracBrowser for help on using the repository browser.