Rubrique précédente: Etude de cas 10 : Conversion automatique de baseRubrique suivante: Exemples d'écriture de scripts de logique applicative


Etude de cas 11 : Mises à jour du modèle de ressource

Une autre utilisation des scripts de conversion consiste à mettre à jour le modèle de ressource CA Business Service Insight avec des valeurs prises d'une source de données externe. Bien qu'il ne soit plus lié à la conversion, cet exemple est une aide précieuse pour mettre à jour le système de façon automatique.

La section précédente sur les Attributs personnalisés décrivait un scénario où les périphériques d'infrastructure matérielle d'une organisation sont stockés dans un CMDB externe, avec une cible de disponibilité attendue pour chaque périphérique. Ces informations ont besoin d'être répliquées dans le modèle de ressource CA Business Service Insight pour garder à jour le mappage d'infrastructure (et les cibles de périphérique).

Dans ce cas, le script est requis pour accomplir les tâches suivantes :

Le script est le suivant :

Option Explicit

'******************************************************************
'Variables globales et constantes
'******************************************************************

Dim added
Dim updated
Dim ChangeSetName

added = 0
updated = 0

Const RESOURCE_TYPE = "Infrastructure Devices"
Const RESOURCE_GROUP = "InfraServers"
Const CHANGESET_NAME = "Infrastructure Devices"
Const CHANGESET_EFFECTIVE_DATE = "01/01/2007"

'******************************************************************
'Sub OnLoad :
'Préparation des entités d'infrastructure fondatrices
'******************************************************************

Sub OnLoad()
   Tools.log "Translation Script : In OnLoad procedure", "D"

   'Cherche une version de ressource préliminaire existante
   Dim ChangeSetMap
   Set ChangeSetMap=Tools.SearchChangeSets(CHANGESET_EFFECTIVE_DATE, CHANGESET_NAME)

   'Si aucune version existante, créer une nouvelle version
   If ChangeSetMap.EMPTY Then
      Tools.AddChangeSet CHANGESET_NAME, CHANGESET_EFFECTIVE_DATE, CHANGESET_NAME
      Tools.Log "Changes set '" & CHANGESET_NAME & "' added."
   End If

   Set ChangeSetMap = Nothing
End sub

Sub OnTranslationEvent(EntryDetails)
End sub

Sub Main()
   Dim conn, rs, resource, deviceTarget, resource_id, resMap, custAttrib, custAttribValue
   Set conn = CreateObject("ADODB.Connection")
   Set rs = CreateObject("ADODB.RecordSet")
   conn.open "DSN=HardwareDevices"
   rs.Open "select * from tblServers", conn

   Do While Not rs.EOF
      resource = rs("serverName")
      deviceTarget= rs("DeviceTarget")
      'Ajoute des ressources à la dernière version si cela n'est pas déjà fait
      If NOT Tools.IsResourceExists(resource) Then
         resource_id = Tools.AddResource(resource, CHANGESET_NAME, "Infrastructure Device", RESOURCE_TYPE, RESOURCE_GROUP, Null, Null)
         Tools.UpdateResourcesCustomAttribute resource, CHANGESET_NAME, "DeviceTarget", deviceTarget
         Tools.Log "AddingResource: " & resource & " with target: " & deviceTarget & " ; assigned ID= " & resource_id
         added = added + 1 
      Else
         Set resMap = Tools.GetResourceDetails(resource,CHANGESET_NAME, False)
         Set custAttrib = resMap("CustomAttributes")
         custAttribValue = CDbl(custAttrib("DeviceTarget")"(CustomAttributeValue"))
         If CDbl(deviceTarget) <> custAttribValue Then
            Tools.UpdateResourcesCustomAttribute resource, CHANGESET_NAME, "DeviceTarget", deviceTarget
            Tools.Log "Updating Resource target for : " & resource & " from: " & deviceTarget & " to " & custAttribValue
            updated = updated + 1
         End If
      End If

      Tools.Commit
      rs.MoveNext
   Loop

   rs.Close
   conn.Close
   Set rs = Nothing
   Set conn = Nothing
End sub

Function Result
   ' Valide la transaction
   Tools.CommitChangeSets CHANGESET_NAME
   Result = added & " resources added and " & updated & " resources updated."
End Function

'********************************************************************************