Introduction

Dans un fonctionnement classique d'héritage, la valeur renseignée manuellement surcharge la valeur héritée du modèle. 

Mais dans certains cas, il peut être intéressant d'utiliser les deux ensemble. C'est ce que l'on appelle l'héritage additif.

Avant de continuer, si les notions de modèle et d'héritage ne vous sont pas familières, vous pouvez vous approprier ces concepts en vous rendant directement sur la page Logique des modèles.

Sommaire

Fonctionnement de base

Shinken Entreprise permet de gérer l'héritage des éléments en prévisualisant les valeurs héritées.

Pour chaque propriété, on peut choisir d'accepter ou refuser son héritage. Le fait de renseigner manuellement la valeur d'une propriété coupera automatiquement son héritage, sauf pour un héritage additif.

En effet, l'héritage additif a pour but de permettre d'hériter des valeurs d'un modèle tout en ajoutant de nouvelles valeurs à notre élément. On peut facilement activer la fonctionnalité avec le bouton stop précédant chaque multi-sélecteur de valeur. Au clic, le signe du bouton devient un plus pour signifier son activation.


Héritage Additif:

DésactivéActivé


Remarque: Au format Cfg il faut ajouter le signe plus ( + ) devenant la première valeur pour activer la fonctionnalité d'héritage additif. Ceci est valable uniquement sur les propriétés qui contiennent des valeurs sous forme de chaîne. Cependant, Shinken Enterprise n'autorise pas le fonctionnement de l'héritage additif sur toutes les propriétés "chaînables". Veuillez vérifier avant toute utilisation que l'interface Shinken Entreprise l'autorise.


Exemple de format cfg :

define host {
    name                M121
    contact_groups      Paris
    register            0
}

define host {
    name                M122
    contact_groups      +Orleans
    register            0
}

define host {
    name                M123
    contact_groups      +Lyon
    register            0
}


Exemple d'héritage additif appliqué sur un modèle d'hôte via l'UI de configuration:

Pour cet exemple, on constate l'activation de l'héritage additive par le bouton vert "plus". On remarque aussi que le modèle d'hôte generic-shinken-host applique à son niveau la valeur Lyon et récupère la valeur Bordeaux avec l'héritage du modèle generic-host.

Priorité de l'héritage

Dans le cas ou plusieurs modèles sont appliqués sur un élément, leurs ordres d'affichage joue un rôle important. Il permet à Shinken Entreprise de connaitre quel modèle appliqué en priorité.
Les modèles sont parcourus dans le sens de lecture, de gauche à droite.

Puisque les modèles d'héritage peuvent eux-même hériter de valeurs provenant d'un ou plusieurs modèles, il peut devenir très compliqué de trouver quelle valeur aura la priorité.
Le schéma suivant devrait vous aider à y voir plus clair dans l'ordre de priorité:

Dans l'exemple ci-dessus, le modèle d'hôte 1 hérite du modèles 2 et le 5 (dans cet ordre, de gauche à droite).
On constate que l'arbre d'héritage de chacun des modèles et parcouru à la suite des autres.

Héritage classique contre Héritage additif

La notion d'ordre de priorité a été abordée et l'on sait également qu'une valeur renseignée localement a toujours autorité sur la valeur définie dans un modèle hérité.
Cette dernière règle n'est cependant plus exacte si la fonction d'héritage additif est activée puisque les valeurs locales vont être concaténées avec les valeurs d'une chaîne héritée.

Il devient alors intéressant de comprendre les mécanismes d'héritage plus en détail:

  • Dans un héritage classique, le premier modèle dans l'arbre d'héritage à retourner une valeur est utilisé. Les modèles sont parcourus dans l'ordre de priorité jusqu'à trouver une valeur.
  • Dans un héritage additif, le premier modèle dans l'arbre d'héritage à désactiver la fonction d'héritage additif est utilisé comme nœud de référence. À partir du nœud, le parcours de l'arbre d'héritage s'il existe continue en "Classique" ou "Additif" en fonction du contexte.

Pour étayer les deux mécanismes d'héritage, comparons deux versions de Shinken Entreprise.

Les versions 02.04.00 et précédentes utilisent exclusivement l'héritage classique. La version 02.05.00 permet les deux types d'héritage.

Partant du postulat que tous les modèles ont activé l'héritage sur la propriété contacts_group;



Légende:



L'exemple suivant est plus complexe avec trois niveaux d'héritage.


On peut voir que dans la version 02.04.00, l'héritage s'arrête à la première valeur trouvée, tant dis que dans la version 02.05.00, chaque arbre est parcouru jusqu'à la détection de l'arrêt de l'héritage additif :


Légende:


Remarque: Pour obtenir un héritage classique il faut désactiver la fonctionnalité additive dans tout l'arbre d'héritage. Notez que par défaut, l'héritage additif est désactivé.

Exemples d'héritages additifs

Voici quelques exemples d'héritages additifs, de plus en plus complexe.


Exemple 1:



Exemple 2:



  • No labels