Skip to main content

Copier des profils d'imaging

S'applique à: Medulla - Medulla relais
Version: Toutes 
Environnement: On-Premise
Categorie: Medulla

Copier un profil imaging sur tous les serveurs

Infos initiales :

  • nom du profil
  • nom du serveur

Qualifier le profil

Dans un premier temps, il faut retrouver toutes les infos du profil.

Objectifs:1008

  • s'assurer qu'il s'agit bien du bon profil
  • récupérer son id et l'id du serveur
-- remplacer <nom_profil> par son nom
-- remplacer <nom_server> par le nom de l'imaging server
SELECT 
    Profile.id,
    Profile.fk_imagingserver
from Profile 
join ImagingServer ims on ims.id = fk_imagingserver
where Profile.name = "<nom_profil>" and ims.name = "<nom_server>";
/*
Résultat:
+----+------------------+
| id | fk_imagingserver |
+----+------------------+
| 34 |                1 |
+----+------------------+
*/

Le profil <nom_profil> a l'id 34 et est associé à l'imaging serveur 1.

On va avoir besoin également de la liste des postinstalls et leur ordre:

-- Remplacer <id_profil> par la valeur <id> du résultat précédent
-- select * from PostInstallInProfile where fk_profile=<id_profil>;
-- Ex:
select * from PostInstallInProfile where fk_profile=34;

/*
Résultat
+------------+------------------------+-------+
| fk_profile | fk_post_install_script | order |
+------------+------------------------+-------+
|         34 |                   1008 |     0 |
|         34 |                   1011 |     1 |
+------------+------------------------+-------+
*/

Il y a deux postinstalls associées au profil 34:

  • postinstall 1008, à l'ordre 0,
  • postinstall 1011, à l'ordre 1.

Ces infos seront nécessaires pour la suite.

Copier les postinstalls

Les postinstalls 1008 et 1011 peuvent ne pas être associées à tous les servers sélectionnés.

La première chose à faire est de s'assurer que les postinstalls 1008 et 1011 sont associées partout où on en a besoin.

Il est nécessaire de répéter cette requête pour tous les scripts de postinstall listés.

begin;

-- Associer tous les ims à la postinstall 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 besoin, ajouter ici des filtres sur les imagingservers
    ims.id not in (
    select pisois.fk_imaging_server
    from PostInstallScriptOnImagingServer pisois
    where pisois.fk_post_install_script = 1008
);

-- Associer tous les ims à la postinstall 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 besoin, ajouter ici des filtres sur les imagingservers
    ims.id not in (
    select pisois.fk_imaging_server
    from PostInstallScriptOnImagingServer pisois
    where pisois.fk_post_install_script = 1011
);

Maintenant on a les postinstalls sur tous les serveurs qu'on souhaite.

Créer les profils

Un profil est associé à un imagingserver unique. Pour copier un profil, il est nécessaire de copier son contenu pour chaque imagingserver cible.

-- Créer les profils <nom_profil> pour tous les ims n'ayant pas encore ce profil
-- 34 correspond à l'id du profil à copier.
-- Remplacer <nom_profil> par le nom du profil à copier
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 besoin ajouter ici les filtres sur les imagingservers
    ims.id not in (select fk_imagingserver from Profile where name = "<nom_profil>");

Associe une postinstall aux nouveaux profils

Les profils pour chaque serveur sont créés mais vides. Il faut maintenant copier le contenu du profil original.

La requête est à adapter et à répéter pour chaque postinstall à copier.

-- Associe les profils créés à la postinstall 1008
-- Remplacer <nom_profil> par le nom du profil
-- 1008 correspond à l'id de la postinstall trouvée précédemment
-- 0 correspond à l'ordre trouvé dans la deuxième requête (colonne order)
insert into PostInstallInProfile (fk_profile, fk_post_install_script, `order`)
select 
    id,
    1008,
    0
from Profile 
where name = "<nom_profil>" 
and id not in 
    (select fk_profile 
    from PostInstallInProfile 
    where fk_post_install_script = 1008
);


-- Associe les profils créés à la postinstall 1011
-- Remplacer <nom_profil> par le nom du profil
-- 1011 correspond à l'id de la postinstall trouvée précédemment
-- 1 correspond à l'ordre trouvé dans la deuxième requête (colonne order)
insert into PostInstallInProfile (fk_profile, fk_post_install_script, `order`)
select 
    id,
    1011,
    1
from Profile 
where name = "<nom_profil>" 
and id not in 
    (select fk_profile 
    from PostInstallInProfile 
    where fk_post_install_script = 1011
);