转换脚本的另一个用途是利用从外部数据源获取的值更新 CA Business Service Insight 资源模型。 此示例不再与转换严格相关,而是介绍了一种用于实现系统自动更新的非常有用的途径。
在关于自定义属性的上一节中介绍了这样一种情况:组织的硬件基础架构设备以及每个设备的预期可用性目标都存储在外部 CMDB 中。 需要将此信息复制到 CA Business Service Insight 资源模型中,以便使基础架构映射(和设备目标)保持最新。
在这种情况下,就需要通过脚本来执行以下任务:
脚本如下所示:
Option Explicit
'******************************************************************
'Global Variables and constants
'******************************************************************
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 = "07-1-1"
'******************************************************************
'Sub OnLoad :
'Preparing the foundation infrustructure enteties
'******************************************************************
Sub OnLoad()
Tools.log "Translation Script : In OnLoad procedure", "D"
'Search for existing preliminary resource version
Dim ChangeSetMap
Set ChangeSetMap=Tools.SearchChangeSets(CHANGESET_EFFECTIVE_DATE, CHANGESET_NAME)
'If no existing version create a new 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")
'Add resources to latest version if it doesnt exist already
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
' Commit the transaction
Tools.CommitChangeSets CHANGESET_NAME
Result = added & " resources added and " & updated & " resources updated."
End Function
'********************************************************************************
| 版权所有 © 2012 CA。 保留所有权利。 | 就该主题发送电子邮件至 CA Technologies |