Skip to main content

Copiar perfiles de imágenes

Aplicable a: Medulla - Relé de Medulla
Versión:Todas 
Entorno:On-Premise
Categoría: Imágenes

Copiar un perfil de imágenes en todos los servidores

Información inicial:

  • nombre del perfil
  • nombre del servidor

Especificar el perfil

En primer lugar, hay que recopilar toda la información del perfil.

Objetivos: 1008

  • Asegurarse de que se trata efectivamente del perfil correcto
  • Obtener su ID y el ID del servidor
-- sustituir <NOMBRE_PERFIL> por su nombre
-- sustituir <NOMBRE_SERVIDOR> por el nombre del servidor de imágenes
SELECT 
    Profile.id,
    Profile.fk_imagingserver
from Profile 
join ImagingServer ims on ims.id = fk_imagingserver
where Profile.name = "<nombre_perfil>" and ims.name = "<nombre_servidor>";
/*
Resultado:
+----+------------------+
| id | fk_imagingserver |
+----+------------------+
| 34 |                1 |
+----+------------------+
*/

El perfil<NOMBRE_PERFIL>tiene el id34y está asociado al servidor de imágenes1.

También necesitaremos la lista de postinstals y su orden:

-- Sustituye <id_perfil> por el valor <id> del resultado anterior
-- select * from PostInstallInProfile where fk_profile=<id_perfil>;
-- Ej.:
select * from PostInstallInProfile where fk_profile=34;

/*
Resultado
+------------+------------------------+-------+
| fk_profile | fk_post_install_script | order |
+------------+------------------------+-------+
|         34 |                   1008 |     0 |
|         34 |                   1011 |     1 |
+------------+------------------------+-------+
*/

Hay dos scripts de postinstalación asociados al perfil 34:

  • el script de posinstalación 1008, en el orden 0,
  • postinstall 1011, en el orden 1.

Esta información será necesaria para continuar.

Copiar las postinstals

Es posible que los postinstalls 1008 y 1011 no estén asociados a todos los servidores seleccionados.

Lo primero que hay que hacer es asegurarse de que los scripts de postinstalación 1008 y 1011 estén asociados en todos los lugares donde se necesiten.

Es necesario repetir esta consulta para todos los scripts de postinstalación enumerados.

begin;

-- Asociar todos los ims al script de postinstalación id=1008
insert into PostInstallScriptOnImagingServer (fk_imaging_server, fk_post_install_script)
select
    ims.id,
    1008
from ImagingServer ims
join Entity e on e.id = ims.fk_entity
where 
    -- Si es necesario, añade aquí filtros sobre los servidores de imágenes
    ims.id not in (
    select pisois.fk_imaging_server
    from PostInstallScriptOnImagingServer pisois
    where pisois.fk_post_install_script = 1008
);

-- Asociar todos los ims al script de postinstalación con id=1011
insert into PostInstallScriptOnImagingServer (fk_imaging_server, fk_post_install_script)
select
    ims.id,
    1011
from ImagingServer ims
join Entity e on e.id = ims.fk_entity
where 
    -- Si es necesario, añade aquí filtros para los servidores de imágenes
    ims.id not in (
    select pisois.fk_imaging_server
    from PostInstallScriptOnImagingServer pisois
    where pisois.fk_post_install_script = 1011
);

Ahora ya tenemos los scripts de postinstalación en todos los servidores que queríamos.

Crear los perfiles

Cada perfil está asociado a un único servidor de imágenes. Para copiar un perfil, es necesario copiar su contenido en cada servidor de imágenes de destino.

-- Crear los perfiles <nombre_perfil> para todos los IMS que aún no tengan este perfil
-- 34 corresponde al ID del perfil que se va a copiar.
-- Sustituye <nombre_perfil> por el nombre del perfil que se va a copiar
insert into Profile (fk_imagingserver, name, description)
select 
    distinct(ims.id),
    (select name from Profile where id=34) as profile_name,
    (select description from Profile where id=34) as profile_desc
from ImagingServer ims
join Entity e on e.id = ims.fk_entity
where 
    -- Si es necesario, añade aquí los filtros para los servidores de imágenes
    ims.id not in (select fk_imagingserver from Profile where name = "<nombre_perfil>");

Asigna una postinstalación a los nuevos perfiles

Los perfiles de cada servidor se crean, pero están vacíos. Ahora hay que copiar el contenido del perfil original.

La consulta debe adaptarse y repetirse para cada postinstall que se vaya a copiar.

-- Asigna los perfiles creados a la postinstall 1008
-- Sustituye <nombre_perfil> por el nombre del perfil
-- 1008 corresponde al id de la postinstalación encontrada anteriormente
-- 0 corresponde al orden encontrado en la segunda consulta (columna «order»)
insert into PostInstallInProfile (fk_profile, fk_post_install_script, `order`)
select 
    id,
    1008,
    0
from Profile 
where name = "<nombre_perfil>" 
and id not in 
    (select fk_profile 
    from PostInstallInProfile 
    where fk_post_install_script = 1008
);


-- Asocia los perfiles creados a la postinstall 1011
-- Sustituye <nombre_perfil> por el nombre del perfil
-- 1011 corresponde al id de la postinstall encontrada anteriormente
-- 1 corresponde al orden encontrado en la segunda consulta (columna order)
insert into PostInstallInProfile (fk_profile, fk_post_install_script, `order`)
select 
    id,
    1011,
    1
from Profile 
where name = "<nombre_perfil>" 
and id not in 
    (select fk_profile 
    from PostInstallInProfile 
    where fk_post_install_script = 1011
);