Skip to main content

Copier des profils d'imaging

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

    **Objectifs**:
    - s'assurer qu'il s'agit bien du bon profil
    - récupérer son id et l'id du serveur

    ```sql
    -- 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`34 et est associé à l'imaging serveur `1`1.

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

    ```sql
    -- 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;
    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.

      ```sql
      begin;
      
      
      begin;

      -- Associer tous les ims à la postinstall id=1008
      insert into PostInstallScriptOnImagingServer (fk_imaging_server, fk_post_install_script)
      select
      ims.id,
      1008 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 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.


      ```sql
      -- 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,name, description)
      description)
      select
       distinct(distinct(ims.id),
      (select name from Profile where id=34)34) as profile_name,
      (select description from Profile where id=34)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.


      ```sql
      -- 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, 1008,
      0
      from 0
      Profile
      fromwhere 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, 1011,
      1
      from 1
      Profile
      fromwhere Profile 
      where name = "<nom_profil>"
      and id not in 
      (select fk_profile
       from PostInstallInProfile
       where fk_post_install_script = 1011
      );
      ```