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
Line 
1### Fichero de actualización de la base de datos.
2# 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 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;
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;
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())
97        THEN
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())
103        THEN
104                ALTER TABLE centros
105                        ADD directorio VARCHAR(50) DEFAULT '';
106        END IF;
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;
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;
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;
134        # Codificar claves de los usuarios, si fuese necesario (ticket #778)
135        IF ((SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS
136              WHERE COLUMN_NAME='pasguor' AND TABLE_NAME='usuarios' AND TABLE_SCHEMA=DATABASE()) != 56)
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;
145        # Crear tabla de log para la cola de acciones (ticket #782)
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;
152END//
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//
164# Ejecutar actualización condicional.
165DELIMITER ';'
166CALL addcols();
167DROP PROCEDURE addcols;
168
169# Nuevos tipos de particiones y de sistemas de ficheros.
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),
184        (CONV('FB02',16,10), 'VMFS-KRN', 1),
185        (CONV('10000',16,10), 'LVM-LV', 1),
186        (CONV('10010',16,10), 'ZFS-VOL', 1)
187        ON DUPLICATE KEY UPDATE
188                codpar=VALUES(codpar), tipopar=VALUES(tipopar), clonable=VALUES(clonable);
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
196
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).
198UPDATE usuarios
199        SET apikey = 'APIKEY'
200        WHERE idusuario = 1 AND apikey = '';
201UPDATE repositorios
202        SET apikey = 'REPOKEY'
203        WHERE idrepositorio = 1 AND apikey = '';
204
205# Nuevos componentes hardware (ticket #713)
206INSERT INTO tipohardwares (idtipohardware, descripcion, urlimg, nemonico) VALUES
207        (17, 'Chasis del Sistema', '', 'cha'),
208        (18, 'Controladores de almacenamiento', '../images/iconos/almacenamiento.png', 'sto'),
209        (19, 'Tipo de proceso de arranque', '../images/iconos/arranque.png', 'boo')
210        ON DUPLICATE KEY UPDATE
211                descripcion=VALUES(descripcion), urlimg=VALUES(urlimg), nemonico=VALUES(nemonico);
212
213# Número de puestos del aula permite valores hasta 32768 (ticket #747)
214ALTER TABLE aulas
215        MODIFY puestos SMALLINT DEFAULT NULL;
216
217# Nueva tabla para datos del proyecto Remote PC (ticket #708).
218CREATE TABLE IF NOT EXISTS remotepc (
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;
227
228# Nuevo comando "Enviar mensaje" (ticket #779)
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);
236INSERT INTO parametros (idparametro, nemonico, descripcion, nomidentificador, nomtabla, nomliteral, tipopa, visual) VALUES
237        (39, 'tit', 'Título', '', '', '', 0, 1),
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);
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.