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

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 a38cb26 was 3be7389, checked in by ramon <ramongomez@…>, 8 years ago

#730: Eliminar de la BD campos sin uso en tabla aulas y actualizar lista de tickets cerrados.

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

  • Property mode set to 100644
File size: 10.7 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;
[3be7389]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;
[6f62a1a]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;
[750388b]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;
[56529d2]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())
[b0cd6af]105        THEN
[56529d2]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())
[b0cd6af]111        THEN
[56529d2]112                ALTER TABLE centros
113                        ADD directorio VARCHAR(50) DEFAULT '';
114        END IF;
[84fa8d6]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;
[212d995]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;
[15acccd]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;
[2b2311f]142        # Codificar claves de los usuarios, si fuese necesario (ticket #778)
[0a42c1c]143        IF ((SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS
144              WHERE COLUMN_NAME='pasguor' AND TABLE_NAME='usuarios' AND TABLE_SCHEMA=DATABASE()) != 56)
[2b2311f]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;
[d4f6719]153        # Crear tabla de log para la cola de acciones (ticket #782)
[049ec55c]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;
[6f62a1a]160END//
[0a42c1c]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//
[6f62a1a]172# Ejecutar actualización condicional.
[049ec55c]173DELIMITER ';'
[6f62a1a]174CALL addcols();
175DROP PROCEDURE addcols;
176
[a616248]177# Nuevos tipos de particiones y de sistemas de ficheros.
[6f62a1a]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),
[dee9fac]192        (CONV('FB02',16,10), 'VMFS-KRN', 1),
193        (CONV('10000',16,10), 'LVM-LV', 1),
194        (CONV('10010',16,10), 'ZFS-VOL', 1)
[6f62a1a]195        ON DUPLICATE KEY UPDATE
196                codpar=VALUES(codpar), tipopar=VALUES(tipopar), clonable=VALUES(clonable);
[a616248]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
[6f62a1a]204
[8e0f770]205# 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]206UPDATE usuarios
207        SET apikey = 'APIKEY'
208        WHERE idusuario = 1 AND apikey = '';
[8e0f770]209UPDATE repositorios
210        SET apikey = 'REPOKEY'
211        WHERE idrepositorio = 1 AND apikey = '';
[077d8df1]212
[6f62a1a]213# Nuevos componentes hardware (ticket #713)
214INSERT INTO tipohardwares (idtipohardware, descripcion, urlimg, nemonico) VALUES
215        (17, 'Chasis del Sistema', '', 'cha'),
[212d995]216        (18, 'Controladores de almacenamiento', '../images/iconos/almacenamiento.png', 'sto'),
217        (19, 'Tipo de proceso de arranque', '../images/iconos/arranque.png', 'boo')
[6f62a1a]218        ON DUPLICATE KEY UPDATE
219                descripcion=VALUES(descripcion), urlimg=VALUES(urlimg), nemonico=VALUES(nemonico);
220
[7da6e599]221# Número de puestos del aula permite valores hasta 32768 (ticket #747)
[049ec55c]222ALTER TABLE aulas
223        MODIFY puestos SMALLINT DEFAULT NULL;
[27e3d34]224
225# Nueva tabla para datos del proyecto Remote PC (ticket #708).
226CREATE TABLE IF NOT EXISTS remotepc (
[d8b6c70]227        id INT(11) NOT NULL,
228        reserved DATETIME DEFAULT NULL,
229        urllogin VARCHAR(100),
230        urllogout VARCHAR(100),
231        PRIMARY KEY (id)
232        ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
233ALTER TABLE remotepc
234       MODIFY reserved DATETIME DEFAULT NULL;
[27e3d34]235
[e4fc3fd]236# Nuevo comando "Enviar mensaje" (ticket #779)
[0a42c1c]237INSERT INTO comandos (idcomando, descripcion, pagina, gestor, funcion, urlimg,
238        aplicambito, visuparametros, parametros, comentarios, activo, submenu) VALUES
239        (16, 'Enviar mensaje', '../comandos/EnviarMensaje.php', '../comandos/gestores/gestor_Comandos.php', 'EnviarMensaje', '', 31, '', '', '', 1, '' )
240        ON DUPLICATE KEY UPDATE
241                descripcion=VALUES(descripcion), pagina=VALUES(pagina),
242                gestor=VALUES(gestor), funcion=VALUES(funcion),
243                aplicambito=VALUES(aplicambito), activo=VALUES(activo);
[e4fc3fd]244INSERT INTO parametros (idparametro, nemonico, descripcion, nomidentificador, nomtabla, nomliteral, tipopa, visual) VALUES
[d8b6c70]245        (39, 'tit', 'Título', '', '', '', 0, 1),
[0a42c1c]246        (40, 'msj', 'Contenido', '', '', '', 0, 1)
247        ON DUPLICATE KEY UPDATE
248                nemonico=VALUES(nemonico), descripcion=VALUES(descripcion),
249                tipopa=VALUES(tipopa), visual=VALUES(visual);
[31ad046]250
251# Evitar error de MySQL con modo NO_ZERO_DATE (ticket #730).
252ALTER TABLE acciones
253        MODIFY fechahorareg DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00',
254        MODIFY fechahorafin DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00';
255
[da380e9]256# Ampliar programación de tareas hasta 2025 (ticket #732).
257ALTER TABLE programaciones
258        MODIFY annos SMALLINT DEFAULT NULL;
259
[a190d69]260# Eliminar tabla sin uso (ticket #730).
261DROP TABLE IF EXISTS campus;
262
Note: See TracBrowser for help on using the repository browser.